Flutter Firebase/Firestore一次写入多个表

mpgws1up  于 2023-03-19  发布在  Flutter
关注(0)|答案(1)|浏览(190)

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

await _databaseReference
      .collection('user_data')
      .document(uid)
      .setData(userData);
await _databaseReference
      .collection('company_data')
      .document(uid)
      .setData(companyData);

但这是2个事务,因此1个可能成功结束,但另一个可能失败,我希望防止发生这种情况。
多谢了。

5sxhfpxr

5sxhfpxr1#

必须使用一个Batched Write,它“是作为一个单元执行的一系列写操作”,如下所示:

var batch = _databaseReference.batch();
batch.setData(
      _databaseReference.collection('user_data').document(uid),
      userData
);
batch.setData(
      _databaseReference.collection('company_data').document(uid),
      companyData
);
await batch.commit();

按照下面Rahul Vyas的注解,注意一个批处理可以同时包含一些setupdatedelete操作,这些操作将在不同的文档(可能在不同的集合中,如上所示)上执行。

相关问题