Node.js MongoDB:Collection.Find()是否支持承诺

Node.js MongoDB:Collection.Find()是否支持承诺,node.js,mongodb,Node.js,Mongodb,我试图改造一个旧的Nodejs web服务,用链接承诺替换回调函数。 在查询mongodb时,我们使用下面的语法遍历结果集 collection.find(filter).toArray(function(err, items) { if (err) { throw(err); } else { console.log(items); } 如果我试图用替换.toArray

我试图改造一个旧的Nodejs web服务,用链接承诺替换回调函数。 在查询mongodb时,我们使用下面的语法遍历结果集

collection.find(filter).toArray(function(err, items) {
          if (err) {
            throw(err);
          } else {
            console.log(items);

          }       
如果我试图用
替换
.toArray()
部分,那么()
我会得到以下错误“col.find(…)。then不是函数”

如果我将
.find()
替换为
.findOne()。然后()


感谢您的帮助。

find
返回一个
游标
,但游标的
toArray
方法返回一个承诺。因此,您可以:

collection.find(filter).toArray().then(...)

我猜你在用猫鼬

find()只是一个查询。要使其执行并返回承诺,需要对其调用.exec()


mongoose文档为您提供了有关如何将mongoose与回调或承诺一起使用的更多详细信息:

您可以执行
collection.find(,function(err,arrayOfData){})
或使用require('util')进行promisify。promisifyfunction@mast3rd3mon我想使用像承诺一样有效的承诺人,它只在查询完成后进入函数finished@Zorgatone我将尝试对require('util')进行进一步的研究。promisify thank youOP应该指定使用的是哪个软件包,但我相信这是官方的mongo DriverFuny,我使用mongoose这么长时间了,我没有注意到mongodb自己做的。看起来它确实在更新版本的nodejs mongodb驱动程序api中回报了承诺,但在早些时候没有versions@Zorgatone几年来,它一直支持承诺;甚至回到2.x版本。
collection.find(filter).exec()
    .then(items => console.log(items))
    .catch(err => { // handle error })