使用AngularFire2 / Firestore从Ionic / Angular中的模板中查找文档字段的引用

时间:2018-01-05 17:53:53

标签: angular ionic3 angularfire2 google-cloud-firestore angularfire5

我正在研究Ionic 3应用程序(使用Angular 4)。我正在使用Angularfire2与我的Firestore数据库进行交互。目前,我正在检索文档作为observable并在我的模板中显示它的字段。

我的问题是我在文档中的一个字段是对另一个文档(类别)的引用。从模板中,我试图做这样的事情:

<ion-badge>{{ getCategory( (pro.element | async)?.category ) }}</ion-badge>

在我的提供程序中调用一个如下所示的函数:

getCategory(ref:AngularFirestoreDocument<Category>){
   if(ref){
     ref.valueChanges().subscribe(val =>{
       return val.name;
     });
   }
}

我不知道这是否是一种合适/可持续的方式来检索参考文档,因为我已经查看了所有内容,但没有找到任何详细的文档来涵盖这一点。当我记录它时,似乎迭代了数千次,返回DocumentReference对象,但是我得到valueChanges()不是函数的错误。

在这种情况下,任何关于最佳做法的指示都将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

当您使用异步管道时,这意味着您正在处理可观察或承诺数据。 在getCategory函数中,您已订阅了observable,我们知道异步管道将为我们执行此操作,因此您只应格式化数据。

你的职能是:

import {Observable} from 'rxjs/Observable';
import "rxjs/add/operator/of";

...

getCategory(ref:AngularFirestoreDocument<Category>){
   if(ref){
     ref.valueChanges().map(val =>{
       return val.name;
     });
   }
   else{
       //return an empty string to get rid of any error when there is no ref.
       return    Observable.of("");
   }
}