Flutter Firebase/Firestore 一次写入多个表

Sam*_*Sam 0 firebase google-cloud-platform firebase-realtime-database flutter google-cloud-firestore

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

await _databaseReference
      .collection('user_data')
      .document(uid)
      .setData(userData);
await _databaseReference
      .collection('company_data')
      .document(uid)
      .setData(companyData);
Run Code Online (Sandbox Code Playgroud)

但这是 2 笔交易,因此 1 笔交易可能会成功结束,但另一笔交易可能会失败,我想防止发生这种情况。

多谢。

Ren*_*nec 6

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

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();
Run Code Online (Sandbox Code Playgroud)

根据下面的 Rahul Vyas 评论,请注意,一个批处理可以同时包含一些要在不同文档上执行的 ,setupdate操作delete(可能在不同的集合中,如上所示)。查看文档中的方法部分。