I am working on deleting documents and removing items when a user deletes their account. In this case, I have a Firebase collection chats
that holds an array users
for all of the users within that chat. When someone deletes their account, I want that specific user to be removed from the users
array. Here is how I am getting the docs:
var chatsUserIn = await instance.collection('chats').where('users', arrayContains: currentUserReference).get();
And that query is working fine. So if the user is in multiple chats (likely), then it will return multiple documents. However, what I cannot figure out how to do it go through each one of those docs and delete the user from the array users
within the document. I do not want to delete the document completely, just remove the user from the array. I know I need to use some various of FieldValue.arrayRemove()
but I cannot figure out how to remove the user from each individual document. Thanks for your help!
Update: I tried the following, but it did not delete the user from the array.
chatsUserIn.docs.forEach((element) => FieldValue.arrayRemove([currentUserReference]));
2
Answers
You want to update these documents, so at the top level it’s an
update
call:You actually want to update a group of Firestore documents. Cloud Firestore does not support the write queries to group documents, this in contrast to read queries witch are also possible on a group of documents.
You must have the doc ID to create a reference to it, and then make an Update request.
then, you can send an Update query for each doc of the ID’s results: