可以在服务器上的firestore事务中修改应用程序状态吗



文档状态

不要在事务函数内部修改应用程序状态。这样做会引入并发问题,因为事务函数可以多次运行,并且不能保证在UI线程上运行。

当使用admin SDK时,会有悲观的并发控制,我不需要考虑UI线程。这是否意味着可以在管理SDK事务中修改状态?

由于各种原因,事务可能无法提交。在这种情况下,SDK最多可以重试事务5次,从而导致更新功能执行多次(请参阅API文档(。因此,在事务更新的主体中进行状态更改仍然不是一个好主意。在进行状态更改之前,最好先观察事务提交状态:

try {
await db.runTransaction(async (t) => {
const doc = await t.get(cityRef);
const newPopulation = doc.data().population + 1;
t.update(cityRef, {population: newPopulation});
});
console.log('Transaction success!');
// DO STATE CHANGES HERE
} catch (e) {
console.log('Transaction failure:', e);
}

最新更新