firebase - 访问firestore中文档内的集合
问题描述
我有一个文档,其中有一个名为relatives
. 在云功能中,我有onUpdate()
此文档的侦听器。更改某些内容后,我想访问文档中的该集合。也是集合中的文件relatives
。
这是它的样子:
我试过的
exports.UpdateLocations = functions.firestore.document("users/{userID}").onUpdate((change, context) => {
const userEmail = change.after.data().email;
const prevLocation = change.before.data().userLocation;
const currentLocation = change.after.data().userLocation;
if (prevLocation === currentLocation) return 0;
if (change.after.data().userType.toString() === "Patient") {
const userLocation = change.after.data().userLocation;
const relatives = change.after.data().relatives;
console.log("User's Current Location: " + userLocation);
console.log("Relatives : "+relatives );
}
return;
});
我想访问亲属及其文件。所以我可以搜索和比较字段并故意更新它们。
解决方案
要从 a 获取子集合DocumentSnapshot
,您必须首先获取DocumentReference
该快照的文档,然后在其CollectionReference
下找到。
在代码中:
change.after.ref.collection("relatives")
在这里:
change.after
为您提供DocumentSnapshot
修改后的文档。change.after.ref
然后给你DocumentReference
那个文件的,所以它在数据库中的位置。change.after.ref.collection("relatives")
然后给你文档CollectionReference
的relatives
子集合。
因此,从这些子集合中获取数据,您必须实际加载该数据,它尚未包含在change
传递给您的函数的对象中。
因此,如果您想为触发该功能的用户加载所有亲属,则类似于:
let relativesRef = change.after.ref.collection("relatives");
return relatives.get().then((querySnapshot) => {
querySnapshot.forEach((relativeDoc) => {
console.log(doc.id, doc.data().relativeaccount);
});
});
推荐阅读
- java - java 流:根据抛出的异常进行过滤的优雅方式
- gradle - Intellij 插件中的 java.lang.NoClassDefFoundError
- c# - 在 C# 中调用 Prolog 文件
- angular - Angular 中的 QR 扫描
- gis - 在 onclick 客户端事件上从服务器运行 GDAL/OGR 函数
- excel - 评论按分页符拆分
- javascript - 一页轮播中的两个视频 - Chromium
- c - 分叉后从子管道读取卡在未知位置的读取循环中
- postgresql - 不能在终端中使用 dropdb 命令删除 db posgres?
- ruby-on-rails - rspec match_array 递归?