问题描述
我有一个函数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")
});
};