Flutter Firebase/Firestore 一次写入多个表

Posted

技术标签:

【中文标题】Flutter Firebase/Firestore 一次写入多个表【英文标题】:Flutter Firebase/Firestore write to multiple tables at once 【发布时间】:2020-08-05 05:16:20 【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

【参考方案1】:

你必须使用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 操作,这些操作要在不同的文档上执行(可能在不同的集合中,如上所示) .查看doc 中的方法部分。

【讨论】:

非常感谢! Firebase 团队是否计划将 Flutter 添加到 Firebase 站点的文档中?我的意思是一些代码sn-ps。谢谢 @Sam 很高兴我能帮助你! “Firebase 团队是否计划将 Flutter 添加到 firebase 站点的文档中?” -> 我不知道。 @RenaudTarnec 是否可以批量插入和更新?例如,我想在一个位置调用 set 并在另一个位置进行更新。有可能吗? @RahulVyas 是的,这完全有可能:一个批处理可以包含设置、更新和删除操作。看方法:pub.dev/documentation/cloud_firestore/latest/cloud_firestore/… @RenaudTarnec 感谢您的链接。这正是我想要的。

以上是关于Flutter Firebase/Firestore 一次写入多个表的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 13 和 Flutter 2.5.1 - 致命错误:找不到“Flutter/Flutter.h”文件 #import <Flutter/Flutter.h>

Flutter 致命错误:找不到“Flutter/Flutter.h”文件

[Flutter] flutter项目一直卡在 Running Gradle task 'assembleDebug'...

flutter 日志输出,Flutter打印日志,flutter log,flutter 真机日志

Flutter开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )

flutter与原生混编(iOS)