带有childKey的Firebase queryEqualToValue

时间:2017-01-02 04:34:20

标签: ios swift firebase firebase-realtime-database

我正在尝试使用以下方法查询Firebase数据库中的数据:

queryEqual(toValue: Any?, childKey: String?)

我的数据库结构:

Schools {
    testUID1 {
        schoolNameLC: test school 1
    }
}

我的查询是:

databaseReference.child("Schools").queryEqual(toValue: "test school 1", childKey: "schoolNameLC").observe(.value) { (snap) in
        print(snap)
    }

此查询打印出null,我无法让它工作。由于我的应用设置方式,我不知道密钥schoolNameLCtestSchool1的父键下具有值testUID1。我想要做的就是搜索我的数据库中的Schools并返回schoolNameLC值为test school 1的任何内容。

1 个答案:

答案 0 :(得分:10)

不幸的是,双参数queryEqualToValue:childKey:(及其兄弟queryStartingAtValue:childKey:queryEndingAtValue:childKey:)是Firebase数据库API中一些最容易被误解的方法。

要由孩子订购然后过滤该孩子的值,您必须致电queryOrderedByChild().queryEqualToValue()。所以@ ElCaptainV2.0说:

databaseReference.child("Schools")
    .queryOrderedByChild("scho‌​olNameLC")
    .queryEqua‌​lToValue("test school 1")

如果想要从具有相同匹配childKey:值的所有节点中的特定键开始,则只应使用test school 1参数。当您尝试分页/无限滚动结果时,此重载非常有用。