0

我正在开发一个 Ionic 3 应用程序(使用 Angular 4)。我正在使用 Angularfire2 与我的 Firestore 数据库进行交互。目前,我正在将文档作为可观察对象检索并在我的模板中显示它的字段。

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

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

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

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

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

在这种情况下,任何关于最佳实践的指导都将不胜感激。

谢谢

4

1 回答 1

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("");
   }
}
于 2018-01-05T20:09:58.343 回答