【发布时间】:2020-06-05 08:55:37
【问题描述】:
我使用 Firebase 事务来获取比较值,然后更新集合中文档的值。
但是当我使用相同的数据并同时发送查询时,它们都读取相同的值,因此我对两者都进行了检查,结果我得到了一个不好的结果。 该字段减少了两次。
我的交易是:
let docRef = db.collection('X').doc('SF');
let reduceValue = 20;
let transaction = db.runTransaction(t => {
return t.get(docRef)
.then(doc => {
let value = doc.data().y ;
if (value >= reduceValue) {
t.update(cptRef, { y:FieldValue.increment(-reduceValue) });
return Promise.resolve('Y increased');
} else {
return Promise.reject('sorry y is ');
}
});
}).then(result => {
console.log('Transaction success', result);
}).catch(err => {
console.log('Transaction failure:', err);
});
谢谢。
【问题讨论】:
-
您能否详细说明如何“同时发送查询”?请编辑您的问题。
-
使用两个设备同时按下调用该函数的按钮
标签: javascript firebase concurrency google-cloud-firestore transactions