2016-07-19 78 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)

相关问题