这是我的Firebase数据库和表:
。
我想通过使用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的当前用户数据。如何编辑代码?
答案 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)
})
});
}