从node.js

时间:2016-07-19 07:24:12

标签: mysql node.js amazon-rds

我正在尝试学习node.js,这样我才能真正开始处理我的个人项目。我一直在努力遵循书中的例子" Learning node.js" (作者Marc Wandschneider)。在这一点上,我决定放弃练习他的例子,并直接使用他的代码作为我的练习代码的框架。

在我的练习代码中,我要做的就是连接到我的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()的参数时,它抱怨数据库未知。在两种情况下都没有&#34;发生错误......&#34;也没有&#34;一切顺利完成!&#34;输出到窗口。

是否有任何异步内容会导致某种非终止无限循环或什么?我该如何解决这个问题?

这本书有一个关联的GitHub page

注:

我的示例和引用的GitHub代码都没有使用该pool变量,因此可以简单地将其注释掉。你需要做的就是在复制,粘贴之前说出npm install asyncnpm install mysql(以及创建一个指向的虚拟RDS数据库,其中包含locations表)并运行此代码。

编辑:

我用database解决了这个问题。我意识到使用的数据库的名称&#39; _&#39;,而不是&#39; - &#39;。同样的问题(代码挂起)仍然存在......

1 个答案:

答案 0 :(得分:1)

我做了以下事情:

在数组的第二个函数中,我需要两个参数,而不是一个。 我修复了这个问题:.title { background: red; } .outer { display: inline-block; border: 1px solid red; background: green; width: 70px; /* add this */ } .inner { display: inline-block; vertical-align: middle; } .left { background: yellow; } .right { background-color: cyan; /* and add the below */ position: relative; left: 60px; text-align: right; transform: translateX(-100%); } 第三个功能只需要<div class="outer"> <div class="title">long title</div> <div class="inner left"> <div>1</div> <div>2</div> <div>3</div> </div> <div class="inner right"> <div>1</div> <div>22</div> </div> </div>