Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase查询根据多个条件给出结果_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase查询根据多个条件给出结果

Javascript Firebase查询根据多个条件给出结果,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个Firebase实时数据库,我想根据两个条件从我的一个表中检索数据,我在查询中使用了多个“orderBy”,但我得到以下错误: ERROR=>Query.orderByChild:不能组合多个orderBy调用 查询=> firebase.database().ref().child('newCoverImages').orderByChild('is_approved').equalTo(false).orderByChild('is_rejected').equalTo(false)

我有一个Firebase实时数据库,我想根据两个条件从我的一个表中检索数据,我在查询中使用了多个“orderBy”,但我得到以下错误:

ERROR=>Query.orderByChild:不能组合多个orderBy调用

查询=>

firebase.database().ref().child('newCoverImages').orderByChild('is_approved').equalTo(false).orderByChild('is_rejected').equalTo(false).on('value', function(snapshot) { 
      console.log(snapshot.val()); 
  });

这在实时数据库中是不可能的,如文档中所述:“一次只能使用一个order by方法。



请注意,您可以使用Firestore“按多个字段订购”,Firebase提供的另一种数据库服务。另请参见和,其中显示了如何编写复合查询。

是的,但我想基于传入数据实现分页,传入数据基于查询中的两个条件。我怎样才能做到这一点?正如我在回答中所说的,将多个orderBy调用与实时数据库结合起来是不可能的。因此,要么在前端进行分页(如果记录太多,可能会非常低效且成本高昂),要么更改数据库,例如使用Firestore。请参阅Firebase数据库查询只能对单个属性进行排序/筛选。在许多情况下,可以将要筛选的值组合到单个(合成)特性中。例如,您可以有一个属性:
“is\u approved\u is\u rejected”:“false\u false”
,然后对该属性进行排序/筛选。有关此方法和其他方法的详细示例,请参见我的回答: