使用猫鼬和Q作为promise。但结果是空{}Node.JS带Q promise的猫鼬请求返回空{}
var Q = require("q");
var deferred = Q.defer();
User.find({}, function (err, users) {
if (err) {
deferred.reject(next(err));
} else {
deferred.resolve(users);
}
});
return deferred.promise;
与猫鼬承诺返回正确的数据相同的请求,但奇怪的顺序完成:
console.log("Label 1");
console.log("Label 2 Users = " + getUsers());
console.log("Label 3");
...
getUsers = function(next) {
User.find({}).exec().
.then(function (err, users) {(
if (users) {
console.log("Label 4 Users = " + JSON.stringify(users));
return user;
}
)}
.catch(err) {
return next(err);
});
}
结果:
标签1 - >标签2 - >用户=未定义 - >标签3 - >标签4用户= {...}
Node.Js v7.5;猫鼬v4.8.3; q v1.4.1
哪里出错?我可以用什么方式在函数中调用猫鼬?
哪里是你的回调?我看到的只是下一个(错误)。另外,为什么不首先使用承诺建立猫鼬? –