获取嵌套集合的数据

时间:2020-03-03 22:40:32

标签: angular google-cloud-firestore angularfire2

我正在制作我的第一个angular / Firestore应用程序,但是在理解如何检索嵌套集合中的数据时遇到了一些麻烦。我要读取的我的Firestore数据库路径在这里:

/users/cl0Apvalb6c0w9hltQ8AOTF4go23/Fights/7WqHl5YUKPszkRELXEI2

因此,用户是一个集合,cl0Apvalb6c0w9hltQ8AOTF4go23是用户的自动ID,Fights是另一个集合,7WqHl5YUKPszkRELXEI2是附加战斗的自动ID(战斗,因为这是在战斗运动中为战斗打分的应用程序)。

战斗本身(7WqHl5YUKPszkRELXEI2)是包含所需数据的数据,例如finalScore,redFighter,blueFighter等,如何读取此数据?

我目前有一个oAuth服务,该服务对用户进行身份验证,并声明该用户可观察。

export class AuthService {
user: Observable<User | null>;
fights: Observable<User | null>;

private userid: String 

constructor(private afAuth: AngularFireAuth, private afs: AngularFirestore, private router: Router)
 {
this.user = this.afAuth.authState.pipe(
  switchMap(user => {
    if (user) {
      return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
    } else {
      return of(null);
    }
  })     
);
}

然后在我要显示的战斗的HTML中,我拥有用户文档的数据,如用户ID所示,因此我知道其当前至少正在读取用户文档数据。

 <!-- User logged in -->
<ng-template #authenticated>
<div *ngIf="auth.user | async as user">
<h3>Howdy, {{ user.displayName }}</h3>
<img  [src]="user.photoURL">
<p>UID: {{ user.uid }}</p>

<p>{{ user.testfield }}</p>
<p>{{user.what }}</p>

我猜在构造函数中,我也必须初始化战斗,但是我不知道该怎么做。我尝试了各种途径来获取我的数据,但它从未建立过。

谢谢

1 个答案:

答案 0 :(得分:1)

要查询嵌套集合,您应该查询整个集合,并检查将仅带来子集合中文档的值。

考虑到这听起来可能令人困惑,我搜索了一些参考资料供您检查,并且可以找到一个很好的教程来帮助您处理嵌套对象。我建议您看一下它们,以便获得更多的内容和有关实现方法的示例。

让我知道信息是否对您有帮助!