Javascript NodeJS的MongoDB驱动程序aggregate()和find()的承诺
我经常读到NodeJS的MongoDB驱动程序(>2.0)支持承诺。但我找到的唯一例子是connect()和findOne()函数。虽然它适用于这些,而且我可以得到承诺,但它不适用于aggregate()或find()。我明白这是因为他们可能会返回游标,但既然有承诺支持,那些承诺在哪里?一定有办法和他们合作。欢迎提供链接、示例或简单解释:) 谢谢,,Javascript NodeJS的MongoDB驱动程序aggregate()和find()的承诺,javascript,node.js,mongodb,promise,Javascript,Node.js,Mongodb,Promise,我经常读到NodeJS的MongoDB驱动程序(>2.0)支持承诺。但我找到的唯一例子是connect()和findOne()函数。虽然它适用于这些,而且我可以得到承诺,但它不适用于aggregate()或find()。我明白这是因为他们可能会返回游标,但既然有承诺支持,那些承诺在哪里?一定有办法和他们合作。欢迎提供链接、示例或简单解释:) 谢谢,, Jordy.您可以编写自己的自定义承诺函数,例如: Query.prototype.find = function (callback) {
Jordy.您可以编写自己的自定义承诺函数,例如:
Query.prototype.find = function (callback) {
return new Promise((resolve, reject) => {
this.model.find(this.query).skip(this.skip).limit(this.limit).sort(this.sort).exec((err, results) => {
if (err) {
return reject(err);
}
return resolve({ find: results });
});
});
}
将结果从
find()
或aggregate()
链接到.toArray()
。当前mongodb nodejs驱动程序的toArray
文档是。因为.find()
和.aggregate()
返回一个(从技术上讲.aggregate()
有点不同),它实际上是节点流的一种扩展形式。如果你想要数据,你可以用承诺来解决,那么你需要类似的东西。点是“默认”光标
用于“大”结果,您可以使用“数组”结构“选择性”变小。像mongoose这样的东西是“自动”为你做的。谢谢@NeilLunn,这正是我想要的:)没有.exec()
方法。您查找了与普通本机驱动程序不同的驱动程序。您还可以尝试使用aggregate().exec(),它将返回一个承诺