【发布时间】:2023-03-10 17:09:02
【问题描述】:
我试图设置将一些项目添加到数组中的逻辑,id 的快速服务器从客户端接收。我的程序接收到产品的 id,然后我从 MongoDB 查询 findOne 中获取产品详细信息,然后使用一些自定义的详细信息,我曾经将该项目推送到数组中,但它不起作用,每当我尝试在 MongoDB 之后推送任何元素时查询它不起作用,我不知道为什么,但请帮助我,对不起我的英语不好!
这是一个使用 MongoDB 的 ExpressJS 服务器
收到的物品:(但实际上是以JSON的形式从客户端收到的):
const items= [
{
productId:"61e01e7e24612b56c33b06c3",
quantity:"4"
},
{
productId:"61e01e9024612b56c33b06c6",
quantity:"10"
}
]
这里的实际代码是问题所在
let itemsData = [];
items.forEach(async (item) => {
const itemData = await findProduct({ _id: item.productId });
// Check if product found
if (!itemData) return res.status(400).json({ message: "Product is Invalid" });
// If found add that in object
itemsData.push({
productId: itemData._id,
name: itemData.name,
price: itemData.price,
quantity: item.quantity,
unit: "Nos",
totalPrice: parseInt(itemData.price) * parseInt(item.quantity)
});
});
上面的代码不会将该对象推送到itemsData
数组
findProduct函数
// Service to find Product
async findProduct(filter) {
return await ProductModel.findOne(filter);
}
如果我使用该推送方法并在 MongoDB 查询之前仅尝试 itemsData.push("hello"); 它可以工作,但如果我将它放在 findProduct 查询之后它就不起作用!我不知道它有什么问题!谁来帮帮我!
我只想将那些有细节的项目愉快地推送到 itemData 对象中,这没有发生我尝试console.log(itemsData)它只是返回[],我该怎么办?
【问题讨论】:
标签: node.js arrays mongodb express