我正在尝试使用findUser
,sails
和MongoDb
实施的功能mongoose
,如下所示:
findUser(userId);
function findUser(user_id){
User.findOne({
_id: user_id
}).exec(function (err, userdata){
//Some Logic
});
}
console.log("XYZ");
此处User
是一个模型,我根据findOne
函数收到的_id
对特定user_id
执行findUser
操作.On在node Inspector
中运行我发现在console.log
函数完成之前我的findUser
语句已打印出来。我的问题是如何确保首先执行findUser
函数,然后用猫鼬打印console.log is
?
答案 0 :(得分:1)
您需要将console.log
放在exec回调中。
这是由于Node.js以及它是异步操作的。它同时运行User.findOne
和console.log()
函数,并且不等待来自MongoDB调用的数据返回。在exec promise本身内,代码是同步运行的,因此在exec函数中放置console.log将解决问题。
function findUser(user_id){
User.findOne({_id: user_id})
.exec(function (err, userdata){
//Some Logic
console.log("XYZ")
});
};