Firebase数据库搜索查询

时间:2016-12-09 23:05:10

标签: json swift firebase firebase-realtime-database

我正在尝试使用字符串搜索我的数据库,例如“A”。我刚看这个Firebase教程Common SQL Queries converted for the Firebase Database - The Firebase Database For SQL Developers #4,它解释说,为了在数据库中搜索字符串(在某个位置),你必须使用:

firebase.database().ref.child("child_name_here")
    .queryOrdered(byChild: "child_name_here")
    .queryStarting(atValue: "value_here_uppercase")
    .queryEnding(atValue: "value_here_uppercase\\uf8ff")

您必须在结束值中使用两个\\作为转义字符才能获得一个\

当我使用Firebase数据库进行此操作时,它无效。这是我的数据库:

{
    "Schools": {
        "randomUID": {
            "location" : "anyTown, anyState",
            "name" : "anyName"
        }
    }
}

这是我的问题:

databaseReference.child("Schools")
    .queryOrdered(byChild: "name")
    .queryStarting(atValue: "A")
    .queryEnding(atValue: "A\\uf8ff") ...

当我从Firebase打印快照时,我会回来。

如果我摆脱了结尾.queryEnding(atValue: "A\\uf8ff"),数据库将返回Schools节点中的所有学校。

如何使用字符串搜索Firebase数据库?

2 个答案:

答案 0 :(得分:0)

queryStarting()queryEnding()可用于编号。例如:您可以获得someField从3到10不等的对象。

用于搜索字符串:您可以使用queryEqualToValue()搜索整个字符串。

答案 1 :(得分:0)

这将显示与Wick相匹配的所有客户。 (不是很快,但可能会给您一个想法)

// sample
let query = 'Wick' 
clientsRef.orderByChild('name')
.startAt(query)
.endAt(query + '\uf8ff')
.once('value', (snapshot) => {
     ....        
})