【问题标题】:How to get a document from Id gotten from another document angularFirestore如何从另一个文档angularFirestore获取的Id获取文档
【发布时间】:2018-05-14 12:12:16
【问题描述】:

我在尝试从另一个文档中的一个文档获取信息时遇到问题,这是我需要的,因为它具有属性 ID。

在下面的 img 上,我可以访问我的饮食集合并获取我的特定文档,但是我无法“返回”并获取我的信息 ID:

然后,我的用户结构如下:

一旦我暴露了我的问题,我会向你展示我无法继续的代码:

commentsDietC: AngularFirestoreDocument<any>;
commentsDiet : Observable<any>;

 this.commentsDietC = db.doc<any>('diets/'+this.diet.idDiet);
 this.commentsDiet = this.commentsDietC.snapshotChanges()
 .map(actions => {
  if(actions.payload.data()){
    if(actions.payload.data().hasOwnProperty('commentsDiet')){

      /*HERE is where I should try to get the displayName and PhotoUrl from 
      the other document*/
      return actions.payload.data().commentsDiet;
     }
  }

});

任何帮助将不胜感激。

【问题讨论】:

  • 通过阅读您的 cmets,您已经在做我能想到的事情,维护一个数组并将用户对象推送到循环中。您的数据库设计的问题是每次添加新注释时,您都必须重建整个 cmets 数组。解决办法是把commentsDiet维护为子集合,每条评论都会是一个文档。

标签: javascript angular firebase ionic-framework google-cloud-firestore


【解决方案1】:

我认为您正在寻找这样的东西:

this.commentsDiet = this.commentsDietC.snapshotChanges()
 .map(actions => {
  var data = actions.payload.data();
  if(data){
    if(data.hasOwnProperty('commentsDiet')){
      data.commentsDiet.forEach(comment => {
        var userDocRef = firebase.firestore().doc('users/'+comment.idUser);
        userDocRef.get().then(userDoc => {
          console.log(userDoc.data().displayName);
        });
      });
    }
  }    
});

因此,一旦您确定存在 cmets,此代码将遍历 cmets,然后获取每个评论的用户。

【讨论】:

  • 嗨@Frank van Puffelen,我已经复制了你的代码,但是在 userDocRef.get() 上出现了一个错误,告诉你方法 get 在 AngularFirestoreDocument 类型上不存在
  • 啊,我没有意识到这是AngularFirestoreDocument。我已经更新为使用常规的 Firestore JavaScript SDK。您还需要查看 AngularFire 用户加入来自两个集合的数据的其他问题,例如 stackoverflow.com/questions/47577689/…stackoverflow.com/questions/41755579/…
  • 非常感谢您的帮助,弗兰克,我会检查这些链接!
  • 您好@Frank,在检查了您的链接后,我最终认为我的问题有所不同。我解决的方式有点脏,我创建了一个数组,一旦我在用户文档上,创建一个新对象并推送它,然后将它显示在模板上。我想这不是最好的解决方案,但这是我能想到的唯一方法。感谢您的宝贵时间。
猜你喜欢
  • 2018-09-03
  • 2018-08-28
  • 1970-01-01
  • 2019-03-17
  • 2021-08-14
  • 2020-12-05
  • 1970-01-01
  • 2019-08-02
  • 2021-05-06
相关资源
最近更新 更多