我相信您正在寻找包含 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。两者都是水果,你知道你的用户会想要所有的水果,所以查询 typeOf 是水果。您可以通过添加 growOn: Tree 来进一步扩展它。然后您可以查询所有在树上生长的项目。您甚至可以添加一个复合谓词 type_grown:Fruit_Tree,然后您可以查询所有长在树上的水果,而不是所有长在树上的坚果。
{
keyname: "Apple"
typeOf: "Fruit"
}
keyname: "Pear"
typeOf: "Fruit"
}
解决方案 5
加载整个节点并在代码中过滤(这是一种很好的方法,具体取决于数据集的大小)。
解决方案 6
查询所有以 value 开头的节点,并拒绝所有不是 value1 或 value 2 的节点。在 Swift 中会是
let nameQuery = usersRef.queryOrdered(byChild: "keyname")
.queryStarting(atValue: "value")
.queryEnding( atValue: "value\u{f8ff}")
请参阅我对this question 的回复,了解有关该问题的更多信息。