根据查询更新Cloud Firestore中的文档

Yus*_*hin 3 javascript firebase firebase-admin google-cloud-firestore

是否可以使用包含where子句的firebase cloud函数设置值?

例如

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

这给我一个错误。

Sim*_*mon 6

我只想将其添加到 Doug Stenvenson 的答案中。

一旦你得到querySnapshot类似的东西admin.firestore().collection('Accounts').where("imagePathName", '==', docNamed).get();:)

以下代码没有像我一样更新所有文档(但只有一个):

querySnapshot.forEach(async doc => {
  await doc.ref.update(newData);
});
Run Code Online (Sandbox Code Playgroud)

为了让它发挥作用,我必须做的是:

for (const doc of querySnapshot.docs) {
  await doc.ref.update(newData);
}
Run Code Online (Sandbox Code Playgroud)


Dou*_*son 5

您可以调用set()来创建或更新由DocumentReference类型对象表示的文档

查询没有set方法。相反,您必须使用get()从Query获取所有文档,以获取QuerySnapshot,然后对其进行迭代,然后分别对每个文档调用set()。