gpt4 book ai didi

javascript - 如何在 NodeJS mongodb 驱动程序版本 2.2 中使用 Promise

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:16 25 4
gpt4 key购买 nike

我正在阅读How to use MongoDB with promises in Node.js?当我在第一个答案中看到他们说,如果我不传递回调,mongo 驱动程序将返回我一个 promise 。它适用于“连接”,但当我尝试时它不起作用:

db.collection('myCollection').find().then((docs)=>{console.log(docs)})

我得到了:

MongoDB error: TypeError: db.collection(...).find(...).then is not a function

我尝试阅读 find() 的文档 http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#find我可以在那里看到一些执行类似操作的示例:

collection.find({}).explain().then(function(docs) {
test.ok(docs != null);

db.close();
});

这是一个 find 的 Promise,但它有这个 explain() 东西。它是什么?另外,为什么这个 API 中没有提到 Promise?还有另一行:

collection.insertMany([{a:1}, {a:2}, {a:3}], {w:1}).then(function(result) {

这也是一个 promise 。

那么,如何在 find() 中使用 Promise 呢?

另外,为什么这个文档不会告诉任何东西的返回值?我不能使用的参数...

最佳答案

您正在寻找的是toArray(),它的工作方式如您所愿(内部回调,或者如果没有回调则返回 promise )

db.collection('...').find().toArray()
.then(function(docs) {
// =)
});

这是因为 db.collection('..').find() 返回一个游标,而不是一个 promise 。

此行为是有意为之的,因为“整体查找”并不是唯一可以使用的模式(即允许流)。

关于javascript - 如何在 NodeJS mongodb 驱动程序版本 2.2 中使用 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com