gpt4 book ai didi

javascript - 如何将查询结果推送到node.js中的数组变量?

转载 作者:行者123 更新时间:2023-12-01 01:03:26 24 4
gpt4 key购买 nike

我正在使用 Node.js 和 MongoDB atlas,这是一个在线数据库。我已经建立了与 MongoDB atlas 的连接,并向数据库发送了查询并检索了一个集合。返回集合,没有任何错误。现在我尝试将查询结果推送到数组,但数组仍然是空的。

我尝试使用console.log(),我看到循环后数组变空。我注意到之前打印了第二个console.log。我不知道为什么。

const mongoose = require('mongoose');

var data = function () {

var array = [];

mongoose.connection.collection("organizations").find({}).toArray(function(err, result) {
if (err) throw err;

for(var i = 0; i < result.length; i++)
{
var a = result[i].name;
array.push(a);
console.log(array[i]); //this shows that the array is getting filled and the result is printed correctly.
}

});

console.log(array); //this shows only [] meaning that the array is now empty.
//this is shown in the log before the first log
return array;
};

module.exports = {
data: data,
};

最佳答案

创建连接和从表中获取信息是异步操作。完成请求可能需要一些时间。因此,您可以使用 async/awaitpromise 来处理异步操作,如下所示。

const mongoose = require('mongoose');
var data = async function () {
var array = [];
const finalResults = await new Promise((resolve, reject) => {
mongoose.connection.collection("organizations").find({}).toArray(function(err, result) {
resolve(result);
});
});

for(var i = 0; i < finalResults.length; i++)
{
var a = finalResults[i].name;
array.push(a);
}
return array;
};

module.exports = {
data: data,
};

也许对你有帮助。

关于javascript - 如何将查询结果推送到node.js中的数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55849319/

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