我想学习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
问题。我意识到数据库的名称使用'_',而不是' - '。同样的问题(代码挂起)仍然存在......