我想學習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
問題。我意識到數據庫的名稱使用'_',而不是' - '。同樣的問題(代碼掛起)仍然存在......