【发布时间】:2020-04-03 17:36:15
【问题描述】:
我现在在 Firebase 中遇到问题。我尝试删除/删除特定数组数据的地方。最好的方法是什么?附言。我只是 firebase/flutter 的新手。
我的数据库结构:
我试图在我的数据库结构中删除的数据(突出显示的):
【问题讨论】:
标签: firebase flutter google-cloud-firestore
我现在在 Firebase 中遇到问题。我尝试删除/删除特定数组数据的地方。最好的方法是什么?附言。我只是 firebase/flutter 的新手。
我的数据库结构:
我试图在我的数据库结构中删除的数据(突出显示的):
【问题讨论】:
标签: firebase flutter google-cloud-firestore
这将帮助您在 can_firestore 中添加和删除特定的数组数据。
getPickUpEquipment(EquipmentEntity equipment) async{
final equipmentCollection = fireStore.collection("equipments").doc(equipment.equipmentId);
final docSnap=await equipmentCollection.get();
List queue=docSnap.get('queue');
if (queue.contains(equipment.uid)==true){
equipmentCollection.update({
"queue":FieldValue.arrayRemove([equipment.uid])
});
}else{
equipmentCollection.update({
"queue":FieldValue.arrayUnion([equipment.uid])
});
}
}
例子
【讨论】:
更新: API 发生了很大变化,尽管概念是相同的。
var collection = FirebaseFirestore.instance.collection('collection');
collection
.doc('document_id')
.update(
{
'your_field': FieldValue.arrayRemove(elementsToDelete),
}
);
【讨论】:
首先创建一个空白列表并在列表中添加要删除的元素,然后使用以下方法更新
注意:对于此方法,您需要要删除的元素的文档 ID
var val=[]; //blank list for add elements which you want to delete
val.add('$addDeletedElements');
Firestore.instance.collection("INTERESTED").document('documentID').updateData({
"Interested Request":FieldValue.arrayRemove(val) })
【讨论】:
FieldValue.arrayUnion(val)
Firestore 不提供按索引删除数组项的直接方法。在这种情况下,您需要做的是读取文档,修改客户端内存中的数组,然后将字段的新内容更新回文档。如果您想让更新成为原子更新,您可以在事务中执行此操作。
【讨论】: