How to delete object from array in firestore
Update elements in an array
If your document contains an array field, you can use arrayUnion() and arrayRemove() to add and remove elements. arrayUnion() adds elements to an array but only elements not already present. arrayRemove() removes all instances of each given element.
// Atomically remove a region from the 'regions' array field.
city_ref.update({u'regions': firestore.ArrayRemove([u'east_coast'])})
You could also use the arrayRemove method from the FieldValue helper.
docRef.update({
array: FieldValue.arrayRemove('idToRemove');
});
https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html
You can preform delete of an object in the array by using arrayRemove
function.
But, you'll need to provide an object.
That object needs to be identical to the one in your doc array on the firestore collection.
For example:
The following code will delete obj
from myArray
array,
but only if obj
exactly exist in that array.
const obj = { field1, field2 ... }
collectionRef.doc(docId).update({
myArray: firebase.firestore.FieldValue.arrayRemove(obj)
})
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);
});
}