2016-07-19 35 views
0

私は個人的なプロジェクトの作業を実際に始めることができるようにnode.jsを学習しようとしています。私は、 "Learning node.js"(Marc Wandschneiderによる)という本の例に従おうとしています。私は、この時点で、彼の例を練習することを断念し、自分のコードを私の練習用コードのフレームワークとして使用することにしました。node.jsからRDSデータベースに接続

私のやっていることは、自分のRDSデータベースに接続している(いいえ、私はElastic Beanstalk、btwを使用していません)、そしてテーブルの1つの内容を出力することだけです。十分に簡単だと思われますが、私はそれを(コードブックに基づいて)コードを覚えていると、接続しようとしているように見えますが、その過程でハングアップしてしまいます。これは私のコードです:

var pool = require('generic-pool'); 
var async = require('async'); 
var mysql = require('mysql'); 

var host = "<database-name>.cu8hvhstcity.us-west-2.rds.amazonaws.com", 
    database = "<database-name>", 
    user = "<username>", 
    password = "<someLongPassword>"; 

var dbClient; 

async.waterfall([ 
    // 1. establish connection to database 
    function (callback) { 
     console.log("Connecting to database " + database + "..."); 
     dbClient = mysql.createConnection({ 
      host: host, 
      database: database, 
      user: user, 
      password: password, 
      port: 3306 
     }); 
     dbClient.connect(); 
    }, 
    // 2. select all from a table (let's go for locations) 
    function (cb) 
    { 
     var query = "SELECT * FROM locations" 
     console.log("running query \"" + query + "\"..."); 
     dbClient.query(query, cb); 
    }, 

    function (rows, fields, callback) 
    { 
     console.log(fields); 
     for (var i = 0; i < rows.length; i++) 
     { 
      console.log(JSON.stringify(rows, null, '\t')); 
     } 
    } 



], function (err, results) { 
    if (err) 
    { 
     console.log("An error occurred..."); 
     console.log(err); 
    } 
    else 
    { 
     console.log("Everything successfully completed!"); 
    }  
    dbClient.end(); 
}) 

これは私がmysql.createConnection()に渡される引数にdatabaseメンバーを入れて最初の試み、より優れている、そしてそれは、データベースが不明であったことを訴えました。どちらの場合も「エラーが発生しました...」または「すべて正常に完了しました!ウィンドウに出力します。

何か非同期のものが起こっていて、何らかの非終端の無限ループなどが発生していますか?これをどうやって解決するのですか?それは単にコメントアウトすることができますので、

は、私の例でも引用さGitHubのコードのいずれもが、そのpool変数を使用します

本は、関連するGitHub page

NOTEを持っています。このコードをコピー、貼り付け、実行する前に、npm install asyncnpm install mysql(指し示すダミーRDSデータベースを作成してlocationsテーブルを含む)と言うだけです。

EDIT:

私はdatabaseで問題を修正しました。私は、データベース名が ' - 'ではなく '_'であることに気付きました。同じ問題(コードがハング)それでも...

答えて

1

私は次のようでした:

第二の機能では、配列に、私は2つのパラメータ、ないものを必要としていました。 私は以下のように修正しました:function(results, cb) 簡単に必要な第3の関数callback(null)

関連する問題