首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数中使用node-mysql

在函数中使用node-mysql
EN

Stack Overflow用户
提问于 2012-11-14 00:19:28
回答 1查看 6.2K关注 0票数 5

我是nodejs的新手,我有一个问题。

尝试创建一个函数,该函数将调用我在表中提到其ID的任何字段的值:

代码语言:javascript
复制
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,它会记录值,但这不能用作在其他函数中用来获取值的函数。

如果我能得到修改函数的帮助,我会很高兴的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-14 01:35:11

这是异步/nodejs初学者的常见错误。实际上,您已经将一个异步函数包装在一个同步函数中,该函数分解了节点的事件循环的性质。返回表达式需要替换为回调。如下所示:

代码语言:javascript
复制
// 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。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13364449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档