node.js - NodeJS:异步等待的产品颜色模型问题
问题描述
在这段代码中,我得到了类似(红色、绿色、蓝色)的颜色字符串,并将其转换为颜色数组。然后,如果颜色已经存在,我循环抛出这个数组并在我的 mongodb 数据库中搜索颜色集合。
如果是,那么我会将文档 ID 推送到 colorsDocIds 并将产品 ID 推送到 colorDocument.product 中,然后我保存文档以使用推送的新产品 ID 更新它。
如果集合中不存在 ,那么我将创建一个并将新的颜色文档 ID 推送到常量中。最后我将colorsDocIds 放入product.colors 字段中。
问题是当我尝试以某种方式做到这一点时,产品文档中的颜色字段可能具有 id 数组,有时它没有。我看到这个问题可能与异步/等待有关。
const colorsArray = colors.split(',').map((color) => color.trim());
const colorsDocIds = [];
colorsArray.forEach(async (color) => {
const colorDocument = await Color.findOne({ color });
if (!colorDocument) {
const newColor = await Color.create({ product: product.id, color });
colorsDocIds.push(newColor.id);
} else {
colorsDocIds.push(colorDocument.id);
colorDocument.product.push(product.id);
await colorDocument.save();
}
});
product.colors = colorsDocIds;
await product.save();