【发布时间】:2020-09-11 11:39:02
【问题描述】:
我目前正在努力从 firebase 的列表中删除地图项。 例如。我想从列表中删除项目“0”(完全)。
我通过 FieldValue.arrayUnion 使用 updateData 方法将单个数组项添加到另一个地方。这工作得很好。然后,在我的另一个地方,我希望有可能从列表中删除该项目。我通过 StreamBuilder 加载数据并通过 ListView.builder 显示 ListTiles。现在我试图用arrayRemove替换arrayUnion,但它不起作用,我不知道为什么。 这是我的代码:
onPressed: () async {
try {
await Firestore.instance
.collection('users')
.document(futSnap.data.uid)
.collection('trainings')
.document(widget.trainingID)
.updateData(
{
'trainingTitle': widget.trainingTitle,
'trainingID': widget.trainingID,
'trainingDate': widget.trainingDate,
'category': widget.trainingCategory,
'trainingExercises':
FieldValue.arrayRemove(
[
{
'title': trainingExercises[i]
['title'],
'description':
trainingExercises[i]
['description'],
'imageURL': trainingExercises[i]
['imageUrl'],
'repetitions':
trainingExercises[i]
['repetitions'],
},
],
)
},
);
} catch (e) {
print(e);
}
},
我没有收到任何错误或其他东西。仍然是颤振和编程的初学者,因此非常感谢您的帮助:)
【问题讨论】:
-
嘿 MaxS。传递给
FieldValue.arrayRemove(...)的值与数据库中存储的值完全相同,这一点非常重要。您能否在此调用之前print所有值,并将更新后的代码及其输出包含在您的问题中。
标签: firebase flutter google-cloud-firestore