我是NODE的新手,我正在尝试使用此代码:
require('./constants.js');
var aar = require('./libs/DBManager.js')
console.log('Loading DBManager');
var player = aar.findPlayer('Potter');
console.log(player);
之后,我发了一个laucher文件:
Group
正确的工作流程是:
但结果是:
我错了什么?有一些回调问题吗?
答案 0 :(得分:2)
在确定完成查询之前,您正在关闭连接。
你应该在查询结束后但在回调中放置dbDisconnect(connection);
。
connection.query(query, function(err, rows, fields)
{
if (err) throw err;
for (var i in rows) {
console.log('Players: ', rows[i].surname);
}
dbDisconnect(connection);
});
同样,findPlayer没有返回任何内容,因此console.log(player);
将是未定义的
答案 1 :(得分:0)
Javascript本质上是异步的,它不等待I / O操作。包括连接到DB的请求在内的任何网络调用都在I / O操作下进行。
问题是您正在请求数据库连接,在返回之前,您正在调用以获取玩家的数据。我建议你将回调方法传递给
dbConnect(callback)
在该回调中,您传递了要执行的查询或操作:
相反,如果您对ORM感到满意,我建议您尝试Sequelize,它会抽象出创建和断开与DB的连接的要求,因此您可以专注于您的crud操作。