gpt4 book ai didi

node.js - MongoDb Bulkwrite 似乎没有抛出任何错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:17 24 4
gpt4 key购买 nike

我一直在尝试在 Mongoose 中执行 Bulkwrite 查询,但我不知道由于什么原因它没有抛出错误

let input = [
{
"variantId": "5e1760fbdfaf28038242d676",
"quantity": 5

},
{
"variantId": "5e17e67b73a34d53160c7252",
"quantity": 13
}
]

try{
let bulkArr = [];

for (const i of input) {
bulkArr.push({
updateOne: {
"filter": { "_id": Mongoose.Types.ObjectId(i.variantId) },
"update": { $inc: { "stocks": - i.quantity } }
}
})
}

await Variant.bulkWrite(bulkArr)
}
catch(e){
console.log(e);
}

我尝试更新数据库中不存在的值,我也尝试将库存更新为负值,明确设置为 min:0以下两个查询都应该抛出错误。但没有抛出错误。

最佳答案

更新不存在的文档不被视为写入错误。您可以console.log结果来查看它只是告诉您匹配元素的数量:

let result = await Test.bulkWrite(bulkArr);
console.log(result);

打印:

...
nMatched: 0,
...

使用负值运行 $inc 仍然有效 - 您可以这样做,即使您有像 min:0 这样的验证规则,它也不会被应用,因为 $inc 在数据库服务器上执行,而 mongoose 不知道在此操作后您的字段值是否会变为负值。当您想要插入新文档或使用 .save() 方法替换现有文档时,将应用 min 规则。

那么如何得到错误呢?尝试通过将相同的值插入到唯一索引中来违反唯一键 - 这种情况会显式引发异常。

关于node.js - MongoDb Bulkwrite 似乎没有抛出任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59727681/

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