在 Swift 4 中使用 where Query 从 Firebase 中检索数据

Posted

技术标签:

【中文标题】在 Swift 4 中使用 where Query 从 Firebase 中检索数据【英文标题】:Retrieve Data from Firebase using where Query in Swift 4 【发布时间】:2018-03-20 08:12:46 【问题描述】:

let ref = Database.database().reference(withPath: "user")
ref.observeSingleEvent(of: .value, with:  snapshot in

    if !snapshot.exists()  return 

    print(snapshot) // Its print all values including Snap (User)

    print(snapshot.value!)

    let username = snapshot.childSnapshot(forPath: "full_name").value
    print(username!)

)

【问题讨论】:

我想显示 videoid = "12345" 的视频 ID。如何在swift 4中做到这一点? 【参考方案1】:

您需要添加一个查询:

ref.queryOrdered(byChild: "videoid").queryEqual(toValue: "12345").observeSingleEvent(of: .value, with:  snapshot in

更多信息在这里:

https://firebase.google.com/docs/reference/swift/firebasedatabase/api/reference/Classes/DatabaseQuery#queryorderedbychild

【讨论】:

感谢您的回复。但它显示| [Firebase/Database][I-RDB034028] 使用未指定的索引。您的数据将在客户端下载和过滤。考虑将 /Messages 中的 ".indexOn": "VideoID" 添加到您的安全规则中以获得更好的性能 这是一个警告不是错误,它与firebase数据库规则有关 在这里检查:firebase.google.com/docs/database/security/indexing-data 好的。明白了。但问题是在我的数据库中总共有 10 个 videoID 值。在 5 个值中 r“12345”,其余 5 个是“67890”。我想显示“12345”的视频ID。并且使用这个查询它只显示 1。请帮助。 @AbhishekChatterjee 确保所有 5 个都是 videoID,大写“I”和“D”

以上是关于在 Swift 4 中使用 where Query 从 Firebase 中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent Query 使用 WHERE 和 OR AND OR?

Laravel Eloquent Query 使用 WHERE 和 OR AND OR?

如何在 Google 电子表格的 WHERE 子句 QUERY 中使用一系列单元格

honeysql merge-where 构建大型查询

Laravel 4:将 where 子句添加到连接条件

JPA @Query ERROR. token : WHERE