如何在Firestore中的多个位置更新头像/ photoUrl?

时间:2019-05-01 17:00:18

标签: firebase google-cloud-firestore google-cloud-functions avatar

在Firestore中,当用户更改头像时,我正在尝试在多个位置更新头像(photoUrl)。

数据结构:https://i.imgur.com/yOAgXwV.png

云功能:

exports.updateAvatars = functions.firestore.document('users/{userID}').onUpdate((change, context) => {
    const userID = context.params.userID;
    const imageURL = change.after.data().avatar;

    console.log(userID);
    console.log(imageURL);
});

借助此云功能,我正在监视用户更新更改。当用户更改头像时,我得到了userID和照片URL。现在,我要更新参与者UID等于userID的所有“待办事项”。

1 个答案:

答案 0 :(得分:0)

您可以使用array_contains运算符进行查询。这样,您就可以在文档中搜索数组值。

https://firebase.google.com/docs/firestore/query-data/queries#array_membership

如果找到了文档,则必须更新所有文档上的URL,并将更新后的文档写回到数据库中。

但这会导致很多不必要的写操作,尤其是在您的todos集合变大并且您想要存档todos数据的情况下。

更简单的解决方案:

我怀疑如果一个待办事项列表没有10个以上的用户,那么保存一些文档读取件会很麻烦。

我建议您只加载需要在待办事项列表上显示头像的所有用户文档。