Как получить данные из базы данных Firebase после передачи currentUserID - PullRequest
0 голосов
/ 24 августа 2018

Это моя база данных и таблица firebase:

firebase database and table.

Я хочу получить данные из таблицы 'active', используя идентификатор пользователя.Я попробовал это так в моем service.ts файле.

getCurrentUserData(userID){
    return new Observable(obs => {
      this.db.list('/active')
      .valueChanges()
      .subscribe(res => {
         console.log(res)
     })
   });
}

Предположим, текущий ID пользователя userID = "oiV0Q09hLbWv0nhFUeFd94aWF3f1", и что в таблице есть много других UserID, также .Iхочу получить только текущие данные пользователя. Используя этот код, я получаю все данные в таблице. Как можно получить только текущие данные пользователя, используя UserID. Как я могу редактировать свой код?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Исходя из angulafire2 doc , я думаю, вам следует поступить следующим образом.Другими словами, вы должны сузить свой запрос таким образом, чтобы фильтрация выполнялась на уровне самой базы данных, а не на стороне клиента.

 getCurrentUserData(userID){
    return new Observable(obs => {
      this.db.list('/active', ref => ref.orderByKey().equalTo('oiV0Q09hLbWv0nhFUeFd94aWF3f1'))
      .valueChanges()
      .subscribe(res => {
         console.log(res)
     })
   });
}

Обратите внимание, что документ angulafire2 также дает некоторые пояснения оДинамические запросы.

Вы также можете прочитать документацию Firebase о запросах, здесь , которая дает более подробную информацию о методах запросов.

0 голосов
/ 24 августа 2018

используйте filter оператор для фильтрации результата по id

 getCurrentUserData(userID){
    return new Observable(obs => {
      this.db.list('/active')
      .filter(p => p.userID === "oiV0Q09hLbWv0nhFUeFd94aWF3f1")
      .valueChanges()
      .subscribe(res => {
         console.log(res)
     })
   });
}
...