Dun*_*nes 7 transactions firebase flutter google-cloud-firestore
我正在运行一个非常简单的Firestore事务,它会在写入之前检查文档是否存在,如果没有.
(用例是注册用户名 - 如果尚未注册,则当前用户可以获取用户名)
这是相关Flutter代码的片段:
DocumentReference usernameDocRef =
Firestore.instance.collection(_USERNAMES).document(username);
await Firestore.instance.runTransaction((transaction) async {
var snapshot = await transaction.get(usernameDocRef);
if (!snapshot.exists) {
transaction.set(usernameDocRef, {
_UsernamesKey.userid: _user.id,
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是因为"事务失败所有重试"异常而失败.
根据Firestore文档,可能会出现故障,原因有两个:
- 该事务包含写操作后的读操作.在任何写操作之前必须始终进行读操作.
- 该事务读取在事务之外修改的文档.在这种情况下,事务会自动再次运行.该事务重试次数有限.
我不认为我会触发其中任何一个.有什么建议?
最近已修复此问题 - https://github.com/flutter/plugins/pull/1206。
如果您使用的是主通道,则修复程序应该已经可用。对于其他频道(开发版、测试版、稳定版)YMMV。
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |