首页 > 解决方案 > 当我物理更新我的 Firestore 数据库字段时,我的应用程序无法访问这些新字段,并显示旧字段

问题描述

这是我的数据库 我有一个用户集合,每个用户都有文档

问题是,每当我使用实际的数据库编辑工具更改字段时,我的应用程序都无法访问数据

当我查询这些字段时,我得到了编辑之前的数据

        if let document = document {
            if let username = document.get("user_username") as? String,
            let action = document.get("status") as? String,
            let description = document.get("status_desc") as? String,
            let companion = document.get("user_username") as? String  {
                
                ViewController.myName = username
                self.helloLabel.text = username + "  "
                self.actionArray.append(action)
                self.actionArray.append(description)
                self.actionArray.append(companion)
                
            } else {
                print("missing fields in the status")
            }
            
        } else {
            print("Document does not exist in cache")
        }
    }

当我现在打印状态字段时,我得到了之前的字符串,它不是“睡眠”

我也很困惑,因为当我通过应用程序本身更新字段时,数据库看起来完全一样,但应用程序能够检测到更改并显示新字段

有人可以解释为什么会发生这种情况,或者我将如何解决这个问题

标签: swiftgoogle-cloud-firestorefieldbackend

解决方案


设置一个监听器来接收数据更改事件,以便使用 onSnapshot() 方法而不是 get() 来监听文档的实时更改。

每次内容更改时,侦听器都会收到数据的初始快照和另一个快照。

关联:

使用 Cloud Firestore 获取实时更新


推荐阅读