我正在使用mongodb和nodejs,我的用例是这样的,
当用户购买其分数存储在其用户文档中的产品时,我将需要更新产品文档以减少其库存,然后需要降低用户在用户文档中的分数,然后需要创建交易记录。这里涉及三个集合,我应该在嵌套的promise结构中执行3次findOne和Save()吗?
还是有其他更有效的方法呢?
我当前正在使用蒙古语,我应该改为使用mongodb官方客户端吗?
Collection1.findOne( doc1 => {
doc1.save().then({
Collection2.findOne( doc2 => {
doc1.save().then({
Collection3.findOne( doc3 => {
doc1.save().then({
})
})
})
})
})
})
最佳答案
就像@Raj Kumar的答案一样,您应该使用异步函数,但我想补充一点,是使用Promise.all
而不是等待每个请求本身。最终的代码是
async function purchase() {
try {
let promise1 = Collection1.findOneAndUpdate(
condition,
update
);
let promise2 = Collection2.findOneAndUpdate(
condition,
update
);
let promie3 = Collection3.findOneAndUpdate(
condition,
update
);
let result = await Promise.all([promise1, promise2, promise3])
} catch(err) {
// handle error in any promise
}
}