有没有办法在云端功能中更新collectionGroup

时间:2019-11-26 01:28:16

标签: javascript node.js firebase google-cloud-firestore

我正在构建一个聊天应用程序。当用户在其本地配置文件上进行更新时,我想使用云功能在整个collectionGroup上进行更新。

我正在成功收听云功能的更新,并使用以下内容检索collectionGroup的列表:

        const collectionGroupNameref = await db.collectionGroup('collectionGroupName').where('userId', '==', data.uid).get();


collectionGroupNameref.forEach(async (val: any) => {
            const connectionsRef = await db.collection('collectionGroupName').doc(val.id).get();
 
        });

但是现在我需要更新该collectionGroup中的一个字段,这就是我遇到问题的地方。

collectionGroup存储在2个位置:

users{id}collectionGroupName{id}
groups{id}collectionGroupName{id}

是否可以更新该collectionGroup中的所有文档

1 个答案:

答案 0 :(得分:2)

Firestore不提供任何方法来更新整个集合或集合组,例如SQL中的“ UPDATE WHERE”。您需要做的是分别写每个文档。因此,如果您已经对集合组中的文档执行了查询,是否可以简单地对结果集中的文档进行迭代并根据需要更新每个文档。您可以使用DocumentSnapshot的ref属性轻松地更新每个文档,无论包含哪个集合。

const querySnapshot = await db
    .collectionGroup('collectionGroupName')
    .where('userId', '==', 'data.uid')
    .get();
querySnapshot.docs.forEach(snapshot => {
    snapshot.ref.update(...)
})