我正在尝试使用Fawn npm模块在mongoodb中进行交易。 我已经在下面编写了代码,并且工作正常。但是,如果item是一个包含多个元素的数组,我该如何执行相同的操作。在这种情况下,我只需要保存一次订单,但是可以多次更新库存。
我试图循环,但是订单被保存了两次,而我收到的错误是MongoError: E11000 duplicate key error collection: db.orders index
,这是因为我多次保存相同的订单。
try {
new Fawn.Task()
.save('orders', order)
.update(
'items',
{ _id: item[0]._id },
{ $inc: { stock: -+req.body.quantity[0] } }
)
.run();
} catch (ex) {
res.status(500).send('Something failed');
}
其中item是我必须更新的所有项目ID的列表。
我想根据商品数组的大小单次更新其他商品的订单。
当我这样做时,它绝对可以正常工作。 但是我希望它是动态的,因为我不知道数组的大小。
答案 0 :(得分:1)
您可以像下面这样有条件地链接它:
try {
let task = new Fawn.Task()
//
task = task.save('orders', order)
//
for (let i in item) {
task = task.update(
'items', {
_id: item[i]._id
}, {
$inc: {
stock: - +req.body.quantity[i]
}
}
)
}
task.run();
} catch (ex) {
res.status(500).send('Something failed');
}
您可能要添加验证。
答案 1 :(得分:0)