【发布时间】:2020-08-28 22:48:42
【问题描述】:
我正在尝试制作一个保存运行用户日志的 Flutter 和 Firebase 健身应用程序。运行保存在 Firestore 数据库中名为“runs”的数组中。我数据库中的每个文档都代表不同用户的运行,因此“运行”数组是每个用户文档中的一个字段。我一直在尝试仅删除“运行”的特定子项,但没有运气。有谁知道怎么做?
这是我的删除功能代码:
final CollectionReference runCollection = Firestore.instance.collection('runs')
Future deleteRun(dynamic runToDelete) async {
return await runCollection.document(uid).setData({
'runs': FieldValue.arrayRemove([runToDelete])
});
}
当我运行它时,我没有收到任何错误,但数据库中没有任何反应。
我也尝试过FieldValue.delete(),但无法在不删除整个数组的情况下隔离“运行”的特定索引以删除。
【问题讨论】:
-
请编辑问题以显示您尝试更改的文档的确切内容,以及
runToDelete的确切值。没有这些,我们不知道您是否做错了什么。 -
顺便说一句,
runCollection.document(uid)将始终为非空。它实际上并没有查询数据库,它只是构建对可能存在或不存在的文档的引用。 -
@DougStevenson
runToDelete的类型为Map<String, dynamic>,包括有关运行的数据。 'runs' 是这些地图的列表 -
请编辑问题以显示准确文档和数据。使用问题底部的编辑链接进行更改。
-
如果可能的话,也可以从您的数据库中添加一个屏幕截图,以便我们对您的结构有更深入的了解。
标签: database firebase flutter dart google-cloud-firestore