【发布时间】:2019-02-02 09:41:01
【问题描述】:
我在 Firebase 中有这样的数据结构。它包含人们基本上登录的时间以及在哪个屏幕上(他们在应用程序上的会话)
session
-- bob
--- sessions
---- 0BDRMuw95DFXhWRH7n0s
----- { 15:00, 16:00}
---- ABDRMuw95DFXhWRH7n0s
----- { 16:00, 16:30}
-- jess
--- sessions
---- 0BDRMuw95DFXhWRH7n0s
----- { 10:00, 11:00}
---- LBDRMuw95DFXhWRH7n0s
----- { 16:00, 16:30}
因此,例如,要获取特定 id 的用户“bob”dession,我需要查询:
session/bob/sessions/0BDRMuw95DFXhWRH7n0s
并取回 { 15:00, 16:00} 的会话 如果我想获取特定用户的会话列表,我会这样做
this.items$ = db.collection<any>('session/bob/sessions').valueChanges();
this.items$.subscribe(res => console.log(res));
然后我得到他所有会话的列表。
现在我的困惑是这样的。上面的代码可以很好地获取 bob 的会话列表。
但是,我想要得到的是用户列表!我以为会是这样的:this.items$ = db.collection<any>('session').valueChanges();
我以为这会返回 'bob' 和 'jess'
这样我就可以获得拥有“会话”的所有用户的列表,然后相应地查询每个用户以获取他们的所有会话,就像这样:this.items$ = db.collection<any>('session/' + user_id + '/sessions').valueChanges();
但是这个this.items$ = db.collection<any>('session').valueChanges();
总是返回一个空数组。
我也试过snapshotChanges() 而不是valueChanges(),这也返回一个空数组!
就其工作原理而言,我的想法是否有错误?
我正在使用 AngularFirestore:https://github.com/angular/angularfire2
【问题讨论】:
标签: angular firebase google-cloud-firestore angularfire2