Mongoose查询回调返回?
这是一个普遍的问题,但为什么mongoose查询功能在,例如:
var myFunc = function(username, callback){
User.findOne({username: username}, 'username name, password', function(err, user){
callback(user);
});
};
myFunc('somename', function(userInfo){
console.log(userInfo);
});
需要另一个函数来返回用户?为什么我不能简单地说:
var myFunc = function(username){
User.findOne({username: username}, 'username name, password', function(err, user){
return user;
});
};
var userInfo = myFunc('somename');
console.log(userInfo);
回答如下:
由于
Node.js
在asynchronous way
中被执行,如果你的userInfo
得到很长时间,它有时无法在query
得到结果。然后为了确保
userInfo
值,你必须使用callback
或Promise
。
有关Node.js
asynchronous nature
的更多详细信息,请参阅此处
http://www.sohamkamani/blog/2016/03/14/wrapping-your-head-around-async-programming/] 1
https://blog.risingstack/node-hero-async-programming-in-node-js/