如何使用值搜索firebase数据,如果值介于两个键之间,我想获取数据
示例
如果用户输入1到5之间的任何数字,则返回以下数据,
"start" : "1",
"end" : "5",
"端" key可以为空,我的firebase数据库中的数组位于
之下"classdata" : [ null, {
"-L4VflG9efJfNOk0ETjK" : {
"start" : "1",
"end" : "2",
"classdate" : 1517761011016,
"commentator" : "",
"description" : "",
"id" : 1517745488337,
"title" : "12"
},
"-L4WUbRH46l3pIcwDC2z" : {
"start" : "3",
"end" : "",
"classdate" : 1518961333727,
"commentator" : "",
"description" : "",
"id" : 1517759080685,
"title" : "5"
},
"-L4WbgyUB7MRVUzBNJM3" : {
"start" : "4",
"end" : "6",
"classdate" : 1518975293250,
"commentator" : "",
"description" : "",
"id" : 1517761201012,
"title" : "2"
},
"-L5cxhQzDkEHrFi6J5Mf" : {
"start" : "7",
"end" : "",
"classdate" : 1519010573333,
"commentator" : "",
"description" : "",
"id" : 1518958204014,
"title" : "1"
},
答案 0 :(得分:1)
您只能查询一个孩子,以便start
或end
孩子。
你可以做的是:
ref.orderByChild("start").equalTo("4").on(...){...};
上面将给出start = 4时的值
ref.orderByChild("start").limitToFirst(5).on(...){..};
这将为您提供孩子start
ref.orderByChild("start").startAt("1").endAt("5").on(..){..};
答案 1 :(得分:0)
正如@Peter Haddad所说" firebase只允许查询一个字段"所以你可以做的就是解决你的问题:
firebase.database().ref('classdata')
.orderByChild('start')
.startAt(1)
.once('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
// Here you filter by your second field
if (childData.end === '' || childData.end <= 5) {
...
}
});
})
您可以找到有关如何在firebase中过滤数据的here更多文档。
Here您可以找到一些非常好的方法来解决您的问题。