Flutter:如何在Firebase中删除特定的数组数据

gg58donl  于 2023-05-07  发布在  Flutter
关注(0)|答案(5)|浏览(216)

我在Firebase遇到了点麻烦。在这里我尝试删除/移除特定的数组数据。做这件事最好的方法是什么?Ps.我只是firebase/flutter的新手。
我的数据库结构:

我试图从数据库结构中删除的数据(突出显示的一个):

bprjcwpo

bprjcwpo1#

首先创建一个空白列表,并在列表中添加要删除的元素,然后使用以下方法更新

注意:对于此方法,您需要要删除的元素的documennt 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) })
6ovsh4lw

6ovsh4lw2#

**更新:**API有很大变化,但概念是一样的。

var collection = FirebaseFirestore.instance.collection('collection');
collection 
  .doc('document_id')
  .update(
  {
    'your_field': FieldValue.arrayRemove(elementsToDelete),
  }
);
qqrboqgw

qqrboqgw3#

Firestore不提供按索引删除数组项的直接方法。在这种情况下,您必须读取文档,修改客户端内存中的数组,然后将字段的新内容更新回文档。如果您想使更新成为原子的,可以在事务中执行此操作。

mqxuamgl

mqxuamgl4#

这将帮助您在could_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])

  });

}

}
示例

2ledvvac

2ledvvac5#

我也遇到过这个问题,下面是我如何解决的。我的案例描述我想从用户集合中删除购物车项目。下面是用户我的收藏看起来像

Future removeItemFromCart(OrderModel order) async {

try {
  var userId = _firebaseAuth.currentUser?.uid;
  final collection = FirebaseFirestore.instance
      .collection(FirestoreConstants.pathUserCollection)
      .doc(userId);
  final docSnap = await collection.get();
  List cart = docSnap.get('cart');
  List item = cart
      .where((element) => element['orderId'].contains(order.orderId))
      .toList();
  collection.update({'cart': FieldValue.arrayRemove(item)});

  Fimber.d("REMOVED unit ${order.unit?.unitName} $userId");
  PaceUser? user = await getUserCart();
  return user;
} on FirebaseAuthException {
  rethrow;
}
return null;}

上面的代码片段为我解决了这个问题。

  • 编码快乐 *

相关问题