javascript - 有没有办法更新云功能中的集合组
问题描述
我正在构建一个聊天应用程序。当用户在他们的本地配置文件上进行更新时,我想使用云功能在 collectionGroup 中进行更新。
我正在成功收听云功能中的更新,并使用以下内容检索 collectionGroups 列表:
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 中的所有文档
解决方案
Firestore 不提供任何方法来更新整个集合或集合组,例如 SQL 中的“UPDATE WHERE”。相反,您需要做的是单独编写每个文档。因此,如果您已经对集合组中的文档执行了查询,您是否可以简单地迭代结果集中的文档并根据需要更新每个文档。您可以使用DocumentSnapshot的 ref 属性轻松更新每个文档,无论它包含哪个集合。
const querySnapshot = await db
.collectionGroup('collectionGroupName')
.where('userId', '==', 'data.uid')
.get();
querySnapshot.docs.forEach(snapshot => {
snapshot.ref.update(...)
})
推荐阅读
- python - 在 Python 中使用 os.stat() 结果时如何忽略隐藏文件?
- regex - 如何编写 Nginx 位置以捕获查询字符串中问号后的所有内容?
- mysql - 返回select Mysql中前N%的记录
- r - 合并两个具有相同 ID 但不同列的 data.tables
- c# - 如何将特定输出值从 exe (c#) 发送到 power shell 脚本
- kotlin - 如何在 Kotlin 中将匿名 lambda 作为参数传递?
- c# - 将 ASP.NET 核心应用程序部署到 Azure 应用服务时出错
- arraylist - 我在线程“main”java.lang.NullPointerException jdbc sql 语句中收到以下错误异常
- azure - 如何使用 ARM 模板为 Azure 功能配置指定粘滞槽设置
- java - 为什么 Java 8 ZonedDateTime 认为 24:01 是有效的时间字符串表示?