猫鼬更新许多文件

时间:2020-06-09 06:33:33

标签: mongodb mongoose

一个快速的问题,所以我试图更新许多文档,但是出现错误“无法并行多次保存()相同的文档”。问题在于,有时(并非总是)猫鼬可能试图并行更新相同的产品信息。我的意思是,可以说我有产品ID的列表。然后,我尝试获取所有这些产品(某些产品的价格可能会翻倍,因为它们可能会有不同的变化)

    const uniqueProductIds = [...new Set(productIds)];
    const products = await Products.find({ active: true, verified: true })
        .where("productId")
        .in(uniqueProductIds)
        .exec();

问题是,当我稍后尝试修改“产品”并保存到forEach中时,出现上述错误。我的问题是我尝试使用updateMany来做到这一点,但没有运气:)这是我的foreach:

products.forEach((product: ProductDoc) => {
                cart.items.forEach(async (cartProduct: CartItem) => {
                    if (product.productId === cartProduct.id) {
                        let newQuantity = Number(product.quantity) - Number(cartProduct.quantity);

                        if (newQuantity < 0) {
                            Sentry.captureMessage(
                                `SOLD more products then there actually is in stock. ${JSON.stringify(product.productID)}`
                            );
                            newQuantity = 0;
                        }

                        product.sold = product.sold
                            ? Number(product.sold) + Number(cartProduct.quantity)
                            : Number(cartProduct.quantity);

                        product.quantity = newQuantity;
                    }
                });
            });

问题是如何不使用forEach就能更新许多文档,并且我能够用一个猫鼬方法来完成它。

0 个答案:

没有答案