当前位置: 首页 > 知识库问答 >
问题:

使用MongoDB驱动程序for NodeJS从aggregate()和find()作出promise

端木弘方
2023-03-14

我总是读到MongoDB驱动程序(>2.0)for NodeJS支持承诺。但我找到的仅有的例子是connect()和findOne()函数。虽然它适用于这些,而且我可以得到承诺,但对于aggregate()和find()它不适用。我明白这是因为它们可能会返回游标,但是既然有承诺支持,那些承诺在哪里呢?一定有办法和他们合作。欢迎提供链接、示例或简单解释:)

谢谢你,乔迪。

共有2个答案

凌远
2023-03-14

您可以做的是编写您自己的自定义承诺函数,例如:

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 });
    });
  });
}
宿嘉
2023-03-14

find()aggregate()的结果链接到.toArray()。当前mongodb nodejs驱动程序的toArray文档在这里。

 类似资料:
  • 我正在开发使用作为数据库和作为框架。为了从数据库中获取数据,我创建了一个类,并使用的功能。我无法通过适当的投影。下面是 要调用函数,我必须通过过滤器、选择器和投影,但无法构建适当的表达式。以下是数据模型和调用函数: 我将客户存储库中的dbContext称为: 例外情况: “序列化程序的值类型为

  • 问题内容: 我正在尝试使用servlet上的Java驱动程序连接到mlab上托管的MongoDB数据库。 问题是我遇到以下错误: 我看了一个答案(如何解决ClassNotFoundException:com.mongodb.connection.BufferProvider?),该答案向我强调了我需要其他jar,自从我下载了这些jar之后,仍然出现此错误。 我正在使用Eclipse并将这三个jar

  • 问题内容: 我想对MongoDB驱动程序作出承诺。我写了以下代码: 您是否知道为什么在调用该方法时为什么没有输出: 问题答案: 手动散布API是很危险的,我建议采取以下措施: 有了Bluebird的承诺,它看起来就像:

  • 我试图使用servlet上的Java驱动程序连接到托管在mlab上的MongoDB数据库。 问题是我得到以下错误: 这样做对吗?我还应该做什么/代替吗?

  • 问题内容: 我正在寻找使用Docker和Kubernetes时通过边车自动设置MongoDb副本集的过程。 以上的设置是不是非常重要的 ,它归结为是,我需要能够调用蒙戈副本集命令(例如,,,,等)从一个Node.js应用程式。 注意:它不一定来自节点应用程序,如果有人知道完成同一件事的另一种方法,请分享您的想法。 更新: 我能够使此工作正常进行,并已将sidecar开源供其他人使用。 https:

  • 问题内容: 我们当前的连接配置如下所示: 并且已在当前版本(源代码)中弃用,并将被删除:“此方法无法替代。使用connectTimeout属性控制连接超时。” 我认为重试和连接超时是两回事。有谁知道为什么改变了它以及它有什么(内部)含义? 问题答案: 关于autoConnectRetry的含义有很多困惑。大多数人认为这意味着,如果操作由于IOException而失败,驱动程序将重试该操作,直到ma