我是nodejs的新手,我有一个问题。
尝试创建一个函数,该函数将调用我在表中提到其ID的任何字段的值:
function getUserInfo (userID, dynamicField) {
var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
query.on('result', function(row) {
return(row.dynamicField);
});
};
console.log(getUserInfo(8, userEmail)) //this should get me the userEmail value of the user with userID=8然而,我得到了“未定义”。如果我使用console.log而不是return,它会记录值,但这不能用作在其他函数中用来获取值的函数。
如果我能得到修改函数的帮助,我会很高兴的。
发布于 2012-11-14 01:35:11
这是异步/nodejs初学者的常见错误。实际上,您已经将一个异步函数包装在一个同步函数中,该函数分解了节点的事件循环的性质。返回表达式需要替换为回调。如下所示:
// Method
function getUserInfo (userID, dynamicField, callback) {
var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
query.on('result', function(row) {
callback(null, row.dynamicField);
});
};
// Implementation
getUserInfo(8, userEmail, function(err, result){
console.log(err || result);
});按照惯例,在Nodejs中,我们总是首先在回调中传递一个error对象。在这种情况下,由于没有要捕获的错误,因此我们在其位置传递null。
https://stackoverflow.com/questions/13364449
复制相似问题