问题描述
我有一个函数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
是一个模型,我正在根据findUser
函数收到的user_id
对特定的_id
执行findOne
操作。在node Inspector
运行时,我发现我的console.log
语句在findUser
函数完成之前被打印。
我的问题是如何确保我的findUser
函数先执行,然后将console.log is
打印成猫鼬?
1楼
nickbdyer
1
已采纳
2015-07-30 13:59:58
您需要将console.log
放入exec回调中。
这是由于Node.js及其异步运行的事实。
它同时运行User.findOne
和console.log()
函数,并且不等待MongoDB调用中的数据返回。
在exec promise内部,代码是同步运行的,因此将console.log放在exec函数中将解决此问题。
function findUser(user_id){
User.findOne({_id: user_id})
.exec(function (err, userdata){
//Some Logic
console.log("XYZ")
});
};