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

时间:2018-06-19 16:07:39

标签: javascript firebase google-cloud-firestore firebase-admin

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

例如

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

这给我一个错误。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

一旦您获得querySnapshot,类似以下内容:admin.firestore().collection('Accounts').where("imagePathName", '==', docNamed).get();

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

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

要使其正常运行,我要做的是:

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