将MongoDB文档存储在Node.js数组中并返回它



我尝试从MongoDB获得特定的文档与Node.js并将它们插入到数组中。

const getStockComments = async (req) => {
const stockname = req.params.stockName;
var comments = [];
var data = [];
const stock = await stockModel.findOne({ name: stockname });
comments = stock.comments;
comments.forEach(async (commentId) => {
const comm = await commentModel.findOne({ _id: commentId });
data.push(comm);
console.log(data); // This returns the data in loops, because its inside a loop.
});
console.log(data); // This not returns the data and i don't know why.
return data;
};

第一个console.log(data)多次返回相同的数据,因为它在循环中。但是第二个console.log(data)根本不返回数据。

我做错了什么?

您可以使用$in操作符来代替循环,以简化操作。

const getStockComments = async (req) => {
const stockname = req.params.stockName;
var comments = [];
var data = [];
const stock = await stockModel.findOne({ name: stockname });
comments = stock.comments;
commentModel.find({ _id: { $in: comments } }, (err, comments) => {
data = comments;
});
console.log(data);
return data;
};

最新更新