是否仍然需要承诺 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 驱动程序?的主要内容,如果未能解决你的问题,请参考以下文章