传递currentUserID后如何从Firebase数据库检索数据

时间:2018-08-24 09:02:55

标签: angular firebase firebase-realtime-database angularfire2

这是我的Firebase数据库和表:

firebase database and table

我想通过使用userID从表“ active”中检索数据。我在 service.ts 文件中尝试过这样的操作。

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

假设当前用户ID为userID = "oiV0Q09hLbWv0nhFUeFd94aWF3f1",并且该表也有很多其他用户ID 。我只想获取当前用户的详细信息。使用该代码,我可以接收表中的所有数据。如何获取仅使用UserID的当前用户数据。如何编辑代码?

2 个答案:

答案 0 :(得分:1)

基于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文档here,其中提供了有关查询技术的更多详细信息。

答案 1 :(得分:0)

使用filter运算符按ID过滤结果

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