是否仍然需要承诺 MongoDB 驱动程序?

Posted

技术标签:

【中文标题】是否仍然需要承诺 MongoDB 驱动程序?【英文标题】:Is it still necessary to promisify the MongoDB driver? 【发布时间】:2015-11-02 04:24:17 【问题描述】:

这个问题的答案是否仍然相关:How can I promisify the MongoDB native javascript driver using bluebird?

我不知道从什么时候开始更新,但是 MongoDB 的 2.0 JS 驱动程序在选项对象promiseLibrary 中有一个属性:http://mongodb.github.io/node-mongodb-native/2.0/api/MongoClient.html

大多数方法/函数都会返回一个承诺,例如Cursor.toArray()

但是,我找不到使用这个新选项的示例,但是使用它会不会更简单:

MongoClient.connect('mongodb://URL',  promiseLibrary: require('bluebird') );

或者这个定义是错误的? - 在这种情况下,应该如何正确定义?

更新:

代码在 io.js 上运行,所以我什至不需要指定 promiseLibrary,因为驱动程序会使用 ES6 承诺? - 然而,据说 bluebird 的 promises 更慢:

Why are native ES6 promises slower and more memory-intensive than bluebird?

更新 2: 我已经添加了 bluebird 标签 - 如果 promisifying 真的比使用 MongoDB 自己的实现更好,也许研究 bluebird 的人可以提供更多细节?

【问题讨论】:

【参考方案1】:

还需要promisify MongoDB驱动吗?

不,他们现在已经内置了对 bluebird 等承诺库的支持。我认为我们应该以不同的方式提出这个问题:

承诺 MongoDB 驱动程序是个好主意吗?

也许,bluebird 在将回调 API 转换为 Promise 方面做得比 Mongo 驱动程序在内部通过更轻松地包装做得更好。仍然承诺“在以前的日子”可能会更快。

【讨论】:

个人很想看看差异的例子。抽出 5 分钟来分享?

以上是关于是否仍然需要承诺 MongoDB 驱动程序?的主要内容,如果未能解决你的问题,请参考以下文章

Promise 和 nodejs MongoDB 驱动程序

Node.js mongodb 驱动程序异步/等待查询

如何检查MongoDB本机nodejs驱动程序中是不是存在集合?

带有 mgo 驱动程序的 MongoDB 管理命令

MongoDB Java

如何使用 PHP 驱动程序在 MongoDB 中创建存储函数