Javascript 如何查询Firebase中两个键之间的值
如何使用值搜索firebase数据,如果值位于两个键之间,我想获取数据 范例 如果用户输入1到5之间的任何数字,则返回以下数据Javascript 如何查询Firebase中两个键之间的值,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,如何使用值搜索firebase数据,如果值位于两个键之间,我想获取数据 范例 如果用户输入1到5之间的任何数字,则返回以下数据 "start" : "1", "end" : "5", 结束键可以为空,firebase数据库中的数组如下 "classdata" : [ null, { "-L4VflG9efJfNOk0ETjK" : { "start" : "1", "end" : "2", "classdate" : 15177610
"start" : "1",
"end" : "5",
结束键可以为空,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"
},
正如@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中过滤数据的更多文档
您可以找到一些非常好的方法来解决您的问题。您只能查询一个子项,因此可以选择开始或结束子项 你能做的是:
ref.orderByChild("start").equalTo("4").on(...){...};
当start=4时,以上将为您提供值
ref.orderByChild("start").limitToFirst(5).on(...){..};
这将为您提供儿童启动的前5个步骤
您的代码尚未按任何顺序对子节点排序,这意味着startAt和endAt子句按优先级进行过滤。提供此复合查询功能,例如wherestart,>,1.whereend,如果答案对您有帮助,请将其投票并标记为正确,以便其他人知道它有帮助,谢谢@拉希德克
ref.orderByChild("start").startAt("1").endAt("5").on(..){..};