Ben*_*der 5 javascript transactions firebase google-cloud-functions google-cloud-firestore
我正在分析显示错误“这些文档的争用太多。请重试”的日志。这里奇怪的是事务中的日志从未执行过,这似乎表明事务从未进行过写入尝试。在下面的示例中,错误表明存在争用runTransaction
,但“正在更新文档”不在任何日志中。
如果没有对文档执行写操作(请注意,这些事务是更新这些文档的唯一方式),怎么可能存在争用?也就是说,如果从来没有任何写入,并且给定事务允许从事务外部读取,下面的代码怎么会导致争用?显然,我知道尝试写入的同一文档上的一些事务会引发争用,但在这种情况下,“更新文档”从未执行,因此不可能有写入尝试。
更简单地说:为了存在争用,需要有写调用;但要进行写入调用,需要触发“更新文档”;“更新文档”没有触发,因此不可能有写入调用,因此不应该存在争用。
return db.runTransaction((transaction) => {
return transaction.get(query).then((querySnapshot) => {
console.log("Updating documents");
[transaction code here to update documents]
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
265 次 |
最近记录: |