我正在研究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()
不是函数的错误。
在这种情况下,任何关于最佳做法的指示都将不胜感激。
谢谢
答案 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("");
}
}