Max*_*axS 7 firebase flutter google-cloud-firestore
我目前正在努力从 firebase 列表中删除地图项。例如,我想从列表中(完全)删除项目“0”。
我使用 updateData 方法通过 FieldValue.arrayUnion 将单个数组项添加到另一个位置。这工作得很好。在我的另一个地方,我希望能够从列表中删除该项目。我通过 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);
}
},
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误或其他东西。仍然是颤振和编程的初学者,所以我们将非常感谢您的帮助:)
感谢您的回复,在进一步尝试中,看来现在确实有效:
onPressed: () async {
try {
await Firestore.instance
.collection('users')
.document(futSnap.data.uid)
.collection('trainings')
.document(widget.trainingID)
.updateData(
{
'trainingExercises':
FieldValue.arrayRemove(
[trainingExercises[i]],
)
},
);
} catch (e) {
print(e);
}
},
Run Code Online (Sandbox Code Playgroud)
但公平地说,我完全不明白为什么,因为我的理解和你的一样,信息必须与整个地图相匹配..?我很高兴它能起作用,但理解为什么会很棒:D
归档时间: |
|
查看次数: |
4103 次 |
最近记录: |