У меня есть такая структура данных в 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}
Так, например, чтобы получить пользовательское «боб» отклонение определенного идентификатора, мне нужно сделать запрос:
session/bob/sessions/0BDRMuw95DFXhWRH7n0s
И вернитесь на сессию {15:00, 16:00}
Если бы я хотел получить список сеансов для конкретного пользователя, я бы сделал это
this.items$ = db.collection<any>('session/bob/sessions').valueChanges();
this.items$.subscribe(res => console.log(res));
Тогда я получаю список всех его сеансов.
Теперь моя путаница заключается в следующем. Приведенный выше код прекрасно работает, чтобы получить список сеансов для Боба.
Тем не менее, я хочу получить список пользователей! Который я думал, будет следующим:
this.items$ = db.collection<any>('session').valueChanges();
Я думал, что это вернет 'Боб' и 'Джесс'
Чтобы я мог получить список всех пользователей, у которых есть «сеанс», а затем запросить каждого пользователя соответствующим образом, чтобы получить все свои сеансы, примерно так:
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