【问题标题】:Add listener in the array when specific value equal then update SwiftUI当特定值相等时在数组中添加监听器然后更新 SwiftUI
【发布时间】:2021-09-14 14:40:17
【问题描述】:

我正在尝试在特定键的数组中添加侦听器。

例如:-

我有这个 firebase 数据库结构:

user 

-> userid
          -> username 
          -> userPhone
          -> userAddress
                        -> [0]: City
                        -> [0]: State

代码:-

func listenUserIds() -> ListenerRegistration {
    let listener = db.collection("user")
        .whereField("userid", isEqualTo: self.profileID)
        .addSnapshotListener { querySnapshot, error in
            if let error = error {
                print("listener error: \(error.localizedDescription)")
                return
            }
            if let snapshot = querySnapshot {
                snapshot.documentChanges.forEach { diff in
                    let userAddress =  diff.document.data()
                    print(userAddress)
                }
            }
        }
    return listener
}

屏幕截图:-

但是当任何用户改变他们的城市时,声明监听器不要调用。

有人可以向我解释如何在城市或州上设置侦听器,当城市和州值发生任何变化时,侦听器会自动调用。我已经尝试按照上面的方法实现,但还没有结果。任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 现在将数据结构映射到代码有点困难。您可以编辑您的问题并显示数据库中的实际 JSON(作为文本,请不要截图)?您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
  • @FrankvanPuffelen 我正在使用 Firestore 数据库。
  • 糟糕,我错过了。这种情况下,您能否在 Firebase 控制台中发布文档(包括其路径)的屏幕截图?
  • @FrankvanPuffelen 更新请测试
  • @FrankvanPuffelen 对我来说有可能吗?

标签: swift firebase firebase-realtime-database


【解决方案1】:

您的查询不适用于您显示的数据。由于202130 是文档ID,您应该使用:

let listener = db.collection("user")
    .doc(self.profileID)
    .addSnapshotListener { querySnapshot, error in

需要查询来匹配文档内部的值。当您匹配文档 ID 时,请使用 doc()

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2021-11-27
    • 2020-03-11
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多