Firebase 访问firestore中文档内部的集合

Firebase 访问firestore中文档内部的集合,firebase,google-cloud-firestore,google-cloud-functions,Firebase,Google Cloud Firestore,Google Cloud Functions,我有一个文档,里面有一个名为亲戚的集合。在云函数中,我有此文档的onUpdate()listener。一旦更改了某些内容,我希望在文档中访问该集合。还有收藏中的文档亲属 下面是它的样子: 我试过的 exports.UpdateLocations=functions.firestore.document(“users/{userID}”).onUpdate((更改,上下文)=>{ const userEmail=change.after.data().email; const prevLoca

我有一个文档,里面有一个名为
亲戚的集合。在云函数中,我有此文档的
onUpdate()
listener。一旦更改了某些内容,我希望在文档中访问该集合。还有收藏中的文档
亲属

下面是它的样子:


我试过的
exports.UpdateLocations=functions.firestore.document(“users/{userID}”).onUpdate((更改,上下文)=>{
const userEmail=change.after.data().email;
const prevLocation=change.before.data().userLocation;
const currentLocation=change.after.data().userLocation;
if(prevLocation==currentLocation)返回0;
if(change.after.data().userType.toString()=“患者”){
const userLocation=change.after.data().userLocation;
const relatives=change.after.data().relatives;
log(“用户当前位置:“+userLocation”);
console.log(“亲戚:+亲戚”);
}
返回;
});


我想访问亲戚及其文档。因此,我可以搜索和比较字段并有目的地更新它们。

要从
文档快照
中获取子集合,您必须首先获取该快照文档的
文档引用
,然后在该快照下找到
集合引用

代码:

change.after.ref.collection("relatives")
在这里:

  • change.after
    提供修改文档的
    DocumentSnapshot
  • change.after.ref
    然后为您提供该文档的
    DocumentReference
    ,从而确定其在数据库中的位置
  • change.after.ref.collection(“亲戚”)
    然后将
    CollectionReference
    提供给文档的
    亲戚子集合
  • 因此,从这些子集合获取数据您必须实际加载该数据,它尚未包含在传递给函数的
    change
    对象中

    因此,如果您想加载触发该函数的用户的所有亲属,它将类似于:

    let relativesRef = change.after.ref.collection("relatives");
    return relatives.get().then((querySnapshot) => {
      querySnapshot.forEach((relativeDoc) => {
        console.log(doc.id, doc.data().relativeaccount);
      });
    });
    

    你能不能用代码来说明你已经做了什么以及你在哪里遇到了困难,而不是用文字来描述你正在尝试做什么?这将使得更有可能有人告诉你哪里出了问题,或者帮你完成。我没有给出代码块的原因是我基本上坚持访问文档中的集合。我改变了我的结构,所有以前的代码都变得一团糟。但是如果给它带来不同,我现在就加上它。太好了!非常感谢你,弗兰克。这就是我要找的。