查询Firebase以返回值是否大于数字

时间:2018-07-31 10:52:52

标签: javascript firebase firebase-realtime-database

我想从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

2 个答案:

答案 0 :(得分:1)

您正在寻找DD/MM/YYYY

orderByValue()

还要签出Firebase documentation on ordering data

答案 1 :(得分:0)

有两种方法可以做到,但不完全是您想要的方式。您必须使用javascript进行进一步处理。一种是在使用order by之后使用limitToLast。这将给出结果中的最后一个数字。

firebase.database().ref('Reports').orderBy(reportid).limitToLast(2).on('value', snap => {

或者使用startAtendAt跳过并以offset的形式获取结果,该结果可以提供两个reportId之间的数据。

firebase.database().ref('Reports').orderBy(reportid).
          .startAt(reportIdStart)
          .endAt(reportIdLast)
          .limitToLast(15)

根据Firebase documentation

  

使用startAt(),endAt()和equalTo()可以选择任意   您的查询的起点和终点

要过滤数据,可以在构造查询时将任何limit方法或range方法与order-by方法结合使用。

  

与排序方法不同,您可以组合多个限制或范围   功能。例如,您可以组合startAt()和endAt()   将结果限制在指定值范围内的方法。

有关更多信息,请访问filtering data上的文档