nodejs函数返回值为undefined,不太明白为什么。

Mesopotamia
  • 98

图片描述图片描述

最后用了promise解决,代码如下:
exports.selectByUsername = selectByUsername;
function selectByUsername(username){

var promise = new Promise(function(resolve){
    var sql = "SELECT COUNT(*) count FROM wx_user WHERE username = ?";
    var sqlParams = [username];
    var count;
    co.query(sql,sqlParams,function(err,result){
        if(err){
            return console.log(err.message);
        }
        console.log("------------------------开始查询---------------------");
        console.log(result);
        var str = JSON.stringify(result);
        var json = JSON.parse(str);
        count = json[0].count;
        console.log(count);
        console.log("------------------------查询结束---------------------");
        resolve(count);
    });
});
promise.then(function(value){
    // console.log(value);
    return value;
});
return promise;

}

app.post('/ajax',urlencodedParser,function(req,res){

username = req.body.name;
console.log(username);
var promise = s.selectByUsername(username);
promise.then(function(value){
    console.log(value);
    if(value!==1){
        res.send("用户名不存在");
    }
});

});

参考文档:http://liubin.org/promises-book/

回复
阅读 6.3k
3 个回答
✓ 已被采纳

query里面的function在query完成后才会执行到,而这个时候外部函数已经返回了,所以count不会赋到值,仍然为undefined

lemonred
  • 2
新手上路,请多包涵

写在query里也不会返回count的,因为query这个方法是异步的

简而言之,把return count 写在query 里面就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏