我想从Firebase获取数据。
这或多或少是我的数据结构:
"Reports" : {
"N06Jrz5hx6Q9bcVDBBUrF3GKSTp2" : 2,
"eLLfNlWLkTcImTRqrYnU0nWuu9P2" : 2
},
"Users":{
"N06Jrz5hx6Q9bcVDBBUrF3GKSTp2" : {
"completedWorks" : {
...
},
"reports" : {
"-LHs0yxUXn-TQC7z_MJM" : {
"category" : "Niewyraźne zdjęcie",
"creatorID" : "z8DxcXyehgMhRyMqmf6q8LpCYfs1",
"reportedID" : "N06Jrz5hx6Q9bcVDBBUrF3GKSTp2",
"resolved" : false,
"text" : "heh",
"workID" : "-LHs-aZJkAhEf1RHVasg"
},
"-LHs1hzlL4roUJfMlvyA" : {
"category" : "Zdjęcie nie przedstawia zadania",
"creatorID" : "z8DxcXyehgMhRyMqmf6q8LpCYfs1",
"reportedID" : "N06Jrz5hx6Q9bcVDBBUrF3GKSTp2",
"resolved" : false,
"text" : "",
"workID" : "-LHs-aZJkAhEf1RHVasg"
}
},
"userType" : "company",
"verified" : true
},
}
因此,您可以看到Reports
部分列出了报告数量。如何使Firebase仅返回报告号大于或等于3的用户的ID?
这样的事情(这行不通,但是我希望能显示出我的想法):
firebase.database().ref('Reports').orderBy(whatHere?).moreThen(2).on('value', snap => {
这甚至可以做到吗?如果可以,我该怎么办?我想获取报告> = 3
的用户的ID答案 0 :(得分:1)
答案 1 :(得分:0)
有两种方法可以做到,但不完全是您想要的方式。您必须使用javascript进行进一步处理。一种是在使用order by之后使用limitToLast
。这将给出结果中的最后一个数字。
firebase.database().ref('Reports').orderBy(reportid).limitToLast(2).on('value', snap => {
或者使用startAt
和endAt
跳过并以offset
的形式获取结果,该结果可以提供两个reportId之间的数据。
firebase.database().ref('Reports').orderBy(reportid).
.startAt(reportIdStart)
.endAt(reportIdLast)
.limitToLast(15)
使用startAt(),endAt()和equalTo()可以选择任意 您的查询的起点和终点
要过滤数据,可以在构造查询时将任何limit方法或range方法与order-by方法结合使用。
与排序方法不同,您可以组合多个限制或范围 功能。例如,您可以组合startAt()和endAt() 将结果限制在指定值范围内的方法。
有关更多信息,请访问filtering data上的文档