【问题标题】:How to retrieve data from Firebase database after passing currentUserID传递 currentUserID 后如何从 Firebase 数据库中检索数据
【发布时间】:2018-08-24 21:41:33
【问题描述】:

这是我的 firebase 数据库和表:

.

我想使用用户 ID 从表“活动”中检索数据。我在我的 service.ts 文件中这样尝试过。

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

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

【问题讨论】:

    标签: angular firebase firebase-realtime-database angularfire2


    【解决方案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,其中提供了有关查询技术的更多详细信息。

    【讨论】:

    • 非常感谢。您的解决方案对我有用。再次感谢。
    • 很高兴能帮上忙!您也可以投票赞成我的回答,请参阅stackoverflow.com/help/someone-answers。感谢 Firebase,祝你好运!
    【解决方案2】:

    使用filter运算符按id过滤掉结果

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

    【讨论】:

    • 然后我得到这样的错误 [ _this.db.list(...).valueChanges(...).filter is not a function ]
    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多