Flutter Firebase实时数据库一次写入/更新多个节点



我使用Firebase作为后端到我的Flutter项目。我需要在一个事务中写入多个节点。现在我有:

await (_firebaseDatabase
.reference()
.child('user_data').Push().set({"userName":"aaa"}));
await (_firebaseDatabase
.reference()
.child('user_history').Push().set({"userName":"aaa"}));

但这是2个transactions,所以1个可能会成功,但另一个可能会失败,我想防止这种情况发生。

另一个用例是写入user_data并更新到user_history。我们如何在firebase实时数据库中实现这一点?

基本上,我想在单个事务中的两个不同节点上插入和更新,这样数据就不会不匹配。

您正在寻找的是所谓的多路径写入操作,它允许您使用单个update调用写入多个非重叠路径。您可以指定要为每个键更新的整个路径,然后数据库将在该特定路径上设置您指定的值。

要生成两个独立的唯一键,可以不带任何参数地调用push()两次。当这样调用时,它实际上并不写入数据库,而只是在客户端生成一个唯一的引用,然后您可以从中获取键。

组合起来,看起来像这样:

const db = _firebaseDatabase.reference();
const key1 = db.push().key;
const key2 = db.push().key;
const values = {};
values["user_data/"+key1+"/username"] = "aaa";
values["user_history/"+key2+"/username"] = "aaa";
db.update(values);

相关内容

  • 没有找到相关文章

最新更新