Search code examples
javascriptfirebasegoogle-cloud-firestore

How to delete object from array in firestore


I have a problem with deleting an Object out of an Array in firestore. I have this data in firestore:

enter image description here enter image description here

And now I would like to delete e.g the second Object out of the 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);
  });
}

But I do not know how to define arrayRemove()

These are the pictures and each one has a delete button to delete the picture.

enter image description here


Solution

  • EDIT: Warning Do not use my solution as it is more than 3 years old, nowadays there is new solution : https://stackoverflow.com/a/59745086/6668441 Mine was a pure js one and is a bad pattern.

    Can't you use filter ? And then return the new posts array to your fb.usersCollection method

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

    edit : So This should be something like :

     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);
      });
    }