我想知道从Mongoose方法返回数据的标准方式是什么。从我在网上看到的示例来看,执行此操作的常见方法似乎是在方法中包含回调作为参数。
例如,我的用户模型上可能有一个findFriends方法
UserSchema.methods.findFriends = callback => {
...
return callback(null, friends);
};
然后为了在我的应用程序中使用此方法,我通过创建一个Promise使事情变得可行。但是我的解决方案感觉很笨拙,可能不是最佳实践。我应该在UserSchema的方法中实现promise吗?我从来没有见过如此做过,这就是为什么我很想知道其他一些观点的原因。
const user = User.findOne();
friendsPromise = new Promise((resolve, reject) => {
user.findFriends((error, friends) => {
if(! error) {
resolve(friends);
} else {
reject(error);
}
});
});
friendsPromise.then(friends => {
console.dir(friends);
});
答案 0 :(得分:0)
猫鼬并不真正在乎您的方法返回什么。如果要使用promise而不是回调,只需返回promise:
UserSchema.methods.findFriends = function() { // see text
...
return promiseReturningFunction();
};
一些评论:
= function() { ... }
),而不要使用箭头符号表示方法。猫鼬将this
的值设置为文档实例,如果使用箭头表示法,它将丢失; promiseReturningFunction
可能是User.find({ friend : ... }).exec()
的结果。有关更多信息,请参见the documentation。