Yushin
Yushin

Reputation: 1750

Updating documents in Cloud Firestore based on a query

is it possible to set values with firebase cloud function that includes a where clause?

E.g

admin.firebase.firestore().collection('Accounts').where("imagePathName", '==', docNamed).set({
  original: 'trial'
});

this is giving me an error.

Upvotes: 6

Views: 4443

Answers (2)

Simon
Simon

Reputation: 6490

I just want to add this to the answer of Doug Stenvenson.

Once you get your querySnapshot with something like: admin.firestore().collection('Accounts').where("imagePathName", '==', docNamed).get();)

The following code didn't update all the documents as I would (but only one):

querySnapshot.forEach(async doc => {
  await doc.ref.update(newData);
});

What I had to do instead to make it work was:

for (const doc of querySnapshot.docs) {
  await doc.ref.update(newData);
}

Upvotes: 6

Doug Stevenson
Doug Stevenson

Reputation: 317948

You can call set() to create or update a document represented by a DocumentReference type object.

A query doesn't have a set method. You would instead have to obtain all the documents from the Query using get() to obtain a QuerySnapshot, iterate that, then call set() on each document individually.

Upvotes: 6

Related Questions