如何在 firebase 实时数据库中获取 "Sequence" 或类似结构的计数器
How to get a "Sequence" or counters like structure in firebase realtime database
我正在从 sql 迁移到无 sql 数据库,作为其中的一部分,我正在开发一个 flutter 项目,在该项目中我正在实现如下所示的序列结构。
static Future<int> get nextId async {
return database.get().then((snapshot) {
return snapshot.value;
}).then((value) {
database.set(value + 1);
return value + 1;
});
}
它有效,每次我使用 nextID 它都会在数据库中递增。我的问题是,当两个不同的用户恰好在调用 nextId 时获得相同的值时是否有可能。
如果你想防止多个用户以相互冲突的方式修改同一个值,你需要use a transaction。
在这种情况下,由于您似乎只是在递增一个值,因此使用 atomic increment operation which is significantly faster as I showed in:
也可能对您有所帮助
我正在从 sql 迁移到无 sql 数据库,作为其中的一部分,我正在开发一个 flutter 项目,在该项目中我正在实现如下所示的序列结构。
static Future<int> get nextId async {
return database.get().then((snapshot) {
return snapshot.value;
}).then((value) {
database.set(value + 1);
return value + 1;
});
}
它有效,每次我使用 nextID 它都会在数据库中递增。我的问题是,当两个不同的用户恰好在调用 nextId 时获得相同的值时是否有可能。
如果你想防止多个用户以相互冲突的方式修改同一个值,你需要use a transaction。
在这种情况下,由于您似乎只是在递增一个值,因此使用 atomic increment operation which is significantly faster as I showed in: