由于firebase数据库不支持从equalTo
中的数组查询,如何在firebase中执行以下查询?
{
'keyname': 'value1'
},
{
'keyname': 'value2'
},
{
'keyname': 'value3'
}
如何检索包含value1和value2的所有对象?我是否使用forEach循环或是否有另一种方法来获取值。
答案 0 :(得分:0)
我相信您正在寻找包含value1 或 value2的所有节点的查询。你的平台没有显示出来,所以我会在很高的层面上解决它。
解决方案1查询value1的所有节点,然后再次查询value2
的所有节点解决方案2查询节点startingAt(" value1")。endingAt(" value2")
解决方案3添加结构以保持对符合这两个条件的节点的引用
items
node_0
keyname: value1
node_8
keyname: value2
value1_value2
node_0: true
node_8: true
解决方案4确定值之间的共性。例如。说value1是Apple,value2是Pear。两者都是Fruit,你知道你的用户会想要所有水果,所以查询typeOf是Fruit。您可以通过添加grownOn:Tree进一步扩展它。然后,您可以查询在树上生长的所有项目。您甚至可以添加复合谓词type_grown:Fruit_Tree,然后您可以查询在树上生长的所有水果,而不是在树上生长的所有坚果。
{
keyname: "Apple"
typeOf: "Fruit"
}
keyname: "Pear"
typeOf: "Fruit"
}
解决方案5 加载整个节点并在代码中过滤(根据数据集的大小,这是一种很好的方法)。
解决方案6 查询以 value 开头的所有节点,并拒绝所有不是value1或值2的节点。在Swift中它将是
let nameQuery = usersRef.queryOrdered(byChild: "keyname")
.queryStarting(atValue: "value")
.queryEnding( atValue: "value\u{f8ff}")
请参阅我对this question的回答,了解有关该问题的更多信息。