Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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_Node.js_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何查询和筛选Firebase实时数据库

Javascript 如何查询和筛选Firebase实时数据库,javascript,node.js,firebase,firebase-realtime-database,Javascript,Node.js,Firebase,Firebase Realtime Database,我想从数据库中获取所有的人,其中名字和姓氏由用户输入 到目前为止,这是我的代码: admin.database().ref('persons').orderByChild('Firstname').equalTo(firstName).limitToLast(1).once("value").then(function(snapshot) { } 这段代码只过滤Firstname,但我找不到任何方法为lastname添加另一个Where子句。我试图添加另一个orderBy,但它似乎不起作用。要

我想从数据库中获取所有的人,其中名字和姓氏由用户输入

到目前为止,这是我的代码:

admin.database().ref('persons').orderByChild('Firstname').equalTo(firstName).limitToLast(1).once("value").then(function(snapshot) {
}

这段代码只过滤Firstname,但我找不到任何方法为lastname添加另一个Where子句。我试图添加另一个orderBy,但它似乎不起作用。要进行简单的查询,实时数据库必须如此困难吗?

简单的回答是:你不能。答案很长:使用谷歌的新数据库或在客户端手动执行过滤。查看其他选项。

然后我可以说,无论是谁创建了实时数据库,它都很糟糕!谢谢你的回答!是的,您可以…使用自定义索引。那不是真的,如果你读了答案,它说你不能
indexOn
只是在对任意子级进行排序时提高读取性能的一种方法。@SUPERCILEX如果向数据添加合成属性,则可以在实时数据库中完成与Firestore相同的用例。我完全支持推荐Firestore,因为它通过为您管理复合索引使这变得更容易,但Charlie说得对,它可以对多个值进行过滤(至少在这样一个简单的情况下)。哦,是的,忘了这一点。不过,问题是关于添加另一个不可能的
equalTo
。无论如何,谢谢你指出这一点!Firebase实时数据库查询只能对单个属性进行排序/筛选。在许多情况下,可以将要筛选的值组合到单个(合成)属性中,例如
“FirstName\u LastName”:“Frank\u van Puffelen”
。有关此方法和其他方法的示例,请参见我的回答: