15 votes

Comment supprimer un objet d'un tableau dans firestore ?

J'ai un problème avec la suppression d'un Object à partir d'un Array en firestore . J'ai ces données dans firestore :

enter image description here enter image description here

Et maintenant je voudrais supprimer par exemple le deuxième Object de la posts Array .

Code :

 deletePic () {
  let docId = `${this.currentUser.uid}`

   fb.usersCollection.doc(docId).update({
     posts: firebase.firestore.FieldValue.arrayRemove()
   })
  .catch(function(error) {
      console.error("Error removing document: ", error);
  });
}

Mais je ne sais pas comment définir arrayRemove()

Voici les images et chacune d'entre elles possède un bouton de suppression pour supprimer l'image.

enter image description here

35voto

Evin1_ Points 5581

Vous pouvez également utiliser le arrayRemove de la méthode Valeur du champ aide.

docRef.update({
   array: FieldValue.arrayRemove('idToRemove');
});

https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html

17voto

Fabien Greard Points 1259

EDIT : Avertissement N'utilisez pas ma solution car elle a plus de 3 ans, il existe aujourd'hui une nouvelle solution : https://stackoverflow.com/a/59745086/6668441 Le mien était un pur js et est un mauvais modèle.

Ne pouvez-vous pas utiliser filtre ? Et ensuite renvoyer le tableau des nouveaux messages à votre fb.usersCollection método

//deleteId is the id from the post you want to delete
posts.filter(post => post.id !== deleteId);

edit : Donc cela devrait être quelque chose comme :

 deletePic (deleteId) {
  let docId = `${this.currentUser.uid}`

   //deleteId is the id from the post you want to delete

   fb.usersCollection.doc(docId).update({
     posts: posts.filter(post => post.id !== deleteId);
   })
  .catch(function(error) {
      console.error("Error removing document: ", error);
  });
}

3voto

Ido Bar Lev Points 51

Vous pouvez effacer un objet du tableau en utilisant la fonction arrayRemove fonction. Mais vous devrez fournir un objet. Cet objet doit être identique à celui de votre tableau de doc sur la collection firestore.

Par exemple :

Le code suivant supprimera obj de myArray réseau, mais seulement si obj existent exactement dans ce tableau.

const obj = { field1, field2 ... } 

collectionRef.doc(docId).update({
    myArray: firebase.firestore.FieldValue.arrayRemove(obj)
})

1voto

Volkov Maxim Points 71

Mise à jour des éléments d'un tableau

Si votre document contient un champ de type tableau, vous pouvez utiliser arrayUnion() et arrayRemove() pour ajouter et supprimer des éléments. arrayUnion() ajoute des éléments à un tableau, mais seulement les éléments qui ne sont pas déjà présents. arrayRemove() supprime toutes les instances de chaque élément donné.

// Atomically remove a region from the 'regions' array field.
city_ref.update({u'regions': firestore.ArrayRemove([u'east_coast'])})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X