6

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.

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Yushin
  • 1,684
  • 3
  • 20
  • 36

2 Answers2

6

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.

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
6

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);
}
Simon
  • 6,025
  • 7
  • 46
  • 98