gpt4 book ai didi

node.js - MongoDB:cursor.toArray 返回 Promise { }

转载 作者:可可西里 更新时间:2023-11-01 09:21:20 27 4
gpt4 key购买 nike

情况

我写了一个查询:

var results = db.collection('diseases').find({
'ttl.txt': {
$regex: data,
$options: 'i'
}
}).toArray();

问题

然后我打印了results到控制台。

if (results.length > 0) {
console.log(results);
}

ToArray 方法必须返回找到的文档数组。但是这个方法返回这个字符串:Promise { <pending> } .

问题

如何返回找到的文档数组而不是这个字符串?

附言

到数组:Link to the documentation

最佳答案

您收到此错误是因为 find() 方法是异步的,这就是 promise 挂起的原因:它仍在获取。

db.collection('diseases').find({
'ttl.txt': {
$regex: data,
$options: 'i'
}
}).toArray().then((data) => {
// Here you can do something with your data
doSomethingWithTheResult(result)
})

请注意,您的数据在回调中。有关 promise 的更多信息,请查看 Promise

根据你的 Node 版本(我相信 7.6+),你可以使用这样的东西

async function getResults() {
return db.collection('diseases').find({
'ttl.txt': {
$regex: data,
$options: 'i'
}
}).toArray();
}

const results = await getResults();

所以你的代码看起来像一个同步代码。这里的关键是等待 promise 结果的 async/await 命令。

希望对您有所帮助!

关于node.js - MongoDB:cursor.toArray 返回 Promise { <pending> },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198268/

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