2016-07-19 80 views
0

我想學習node.js,以便我可以真正開始工作我的個人項目。我一直在試圖按照「Learning node.js」(Marc Wandschneider着)的書中的例子。此時,我決定放棄練習他的例子,並直接使用他的代碼作爲我的練習代碼的框架。從node.js連接到RDS數據庫

在我的練習代碼中,我試圖做的是連接到我的RDS數據庫(不,我沒有使用Elastic Beanstalk,順便說一句),並輸出其中一個表的內容。似乎很簡單,但是當我爲它編寫代碼時(基於本書),它似乎嘗試連接,但在這個過程中被掛起。這是我的代碼:

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(); 
}) 

這比第一次嘗試更好的,當我把一個database成員傳遞給mysql.createConnection()的說法,並抱怨說,數據庫是未知的。在這兩種情況下,都沒有發生「發生錯誤......」或「一切順利完成!」輸出到窗口。

是否有任何異步的東西進行,導致某種非終止無限循環或什麼?我該如何解決?

這本書有一個相關的GitHub page

注:

既不是我,也不如引用的GitHub代碼利用該pool可變的,所以可以簡單地註釋掉。你只需要在npm install async,npm install mysql(以及創建一個虛擬的RDS數據庫指向表,它包含locations表)之前,自己來執行這個操作,然後再複製,粘貼和運行這段代碼。

編輯:

我固定database問題。我意識到數據庫的名稱使用'_',而不是' - '。同樣的問題(代碼掛起)仍然存在......

回答

1

我做了以下內容:

在數組中的第二個功能,我需要兩個參數,一個也沒有。 我這樣固定:function(results, cb) 第三個功能只需要callback(null)

相關問題