【发布时间】:2017-07-10 08:33:37
【问题描述】:
使用 mongoose 和 Q 表示承诺。但结果为空{}
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;
与 mongoose 承诺的相同请求返回正确的数据,但完成了奇怪的订单:
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
哪里出错了?函数中可以用什么方式调用mongoose?
【问题讨论】:
-
您的回电在哪里?我所看到的只是下一个(错误)。另外,你为什么不首先使用猫鼬构建承诺?
标签: node.js mongoose promise q