【问题标题】:Simple search on Firebase database with swift 3使用 swift 3 在 Firebase 数据库上进行简单搜索
【发布时间】:2017-11-08 01:55:57
【问题描述】:

我是 Firebase 的新手,在过去的两天里,我一直在试图弄清楚如何在我的数据库上执行简单的搜索,但没有任何成功。

我想对所有频道子项进行搜索。例如我想搜索是否有一个名为Klx0N4pxsBHGVkhYuY0 的频道。我试试

queryEqual(toValue: "Klx0N4pxsBHGVkhYuY0")

但没有运气。

非常感谢您的宝贵时间和帮助。

【问题讨论】:

    标签: ios swift database firebase firebase-realtime-database


    【解决方案1】:

    您所要做的就是观察该路径,如果没有数据,snapshot.value 将为零。

    let ref = FIRDatabase.database().reference().child("channels").child("Klx0N4pxsBHGVkhYuY0")
    
    ref.observeSingleEvent(of: .value, with: { (snapshot) in
    
        if let value = snapshot.value as? Dictionary<String,Any> {
    
            // There is data, so it exists
    
            print(value)
    
        } else {
    
            // There is no data, so it doesn't exist
        }
    })
    

    【讨论】:

    • 你的答案也可以。感谢您的时间帮助。祝你有美好的一天。
    【解决方案2】:

    如果您只想“搜索是否有名为 Klx0N4pxsBHGVkhYuY0 的频道”,您可以这样做:

    let ref = FIRDatabase.database().reference().child("channels")
    
    ref.observeSingleEvent(of: .value, with: { (snapshot) in
        if snapshot.hasChild("Klx0N4pxsBHGVkhYuY0") {
             // yes, it is
        } else {
             // no, it isn't
        }
    })
    

    希望对你有帮助。

    【讨论】:

    • 非常感谢弗拉德,你让我开心。希望你也有美好的一天。
    • @kstefanou 很高兴听到。祝你有美好的一天:)
    • 这不是一个实用的方法!您正在下载整个数据库,然后搜索所有数据,这在时间、互联网数据和计算能力方面都是昂贵的。根据我的回答,您仅在数据存在时才下载数据,这将节省时间和计算能力。您需要考虑哪种方法是正确的。 @kstefanou
    • @TristanBeaton 是的。这取决于情况。也许他无论如何都会下载所有频道。所以。如果话题发起者认为,在他的情况下你的答案更正确,他可以重新接受。但在这种情况下也uparrow my。因为它仍然是正确的。谢谢
    • @TristanBeaton 你是对的,但正如我所说,我是 firebase 的新手,所以我不完全理解其中的区别,但你是对的,你的答案最适合我的情况。我接受你的回答。谢谢你们俩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    相关资源
    最近更新 更多