我对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
Run Code Online (Sandbox Code Playgroud)
但是,我得到"未定义".如果我使用console.log而不是return,它会记录该值,但这不能用作在其他函数中使用以获取值的函数.
如果我可以获得修改功能的帮助,我将很高兴.
srq*_*inn 11
这是async/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);
});
Run Code Online (Sandbox Code Playgroud)
按照惯例,在Nodejs中,我们总是首先在回调中传递一个错误对象.在这种情况下,由于没有要捕获的错误,我们在其位置传递null.
归档时间: |
|
查看次数: |
5230 次 |
最近记录: |