使用Flutter将CRUD操作应用于Cloud Firestore中的文档的推荐方法是什么?

时间:2018-11-08 20:31:50

标签: flutter google-cloud-firestore

我正在考虑迁移使用Xamarin编写的大型应用程序,并以 Cloud Firestore 作为后端迁移到Flutter。由于Cloud Firestore仍处于测试阶段,因此从Flutter客户端调用时,很少有具体示例展示最佳实践。

尤其是-似乎没有直接的方法来检查TX是否失败或成功。

因此,以标准的“ 删除”操作为例-在在线/离线模式下滚动自己的交易的最佳方法是什么,包括在Flutter中提供适当的错误处理?

我在(在remove方法中)下扩展了解决方案,您可以看到正在进行两个网络调用,一个用于获取最新的文档参考,另一个用于执行删除。 / p>

但是,由于我们使用StreamBuilder来获取文档更改时的更新,因此我们不能肯定地假设 widget.documents [index] .reference 将保存最新的文档参考,因此废除了与:

var snapshot=await tx.get(docReference)
if (snapshot.exists){
    await tx.delete(snapshot.reference)
}

,只需使用:

   var docReference = widget.documents[index].reference;
   await tx.delete(docReference);

注意

以上两种方法都可以工作-我追求的是一种100%符合ACID测试(与交易有关)并提供最佳性能的方法。

用例示例

Streambuilder订阅:

Streambuilder subscription

FirestoreListView中,创建了一个ListView.Builder,其中添加了删除/编辑按钮,该按钮允许删除或添加任何项目,因此,我们具有以下内容:

列表视图:

Listview

在“删除”按钮后面,我们执行删除操作:

删除代码:

Delete code

0 个答案:

没有答案