Firebase实时数据库查询在重新安装应用程序之前不会获取新数据

cclgggtu  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(119)

在我的应用程序上注册我检查用户名是否已经采取。
我安装了应用程序,去注册,检查用户名是否是免费的,一切正常。如果用户名被占用,它告诉我。但后来当我创建帐户,并试图创建另一个相同的用户名,由于某种原因,这个用户名无法在数据库中找到,即使它在那里。
下面是我使用的代码:

func singleObserveUser(withUsername username: String, completion: @escaping (UserModel) -> Void, onError: @escaping (String) -> Void)  {
        let queryUsername = username.lowercased().trimmingCharacters(in: .whitespaces)
        usersRef.queryOrdered(byChild: Constants.UserData.UsernameLowercased).queryEqual(toValue: queryUsername).observeSingleEvent(of: .value) { (snapshot) in
            if let _ = snapshot.value as? NSNull {
                onError("No userdata found")
            } else {
                if let dict = snapshot.value as? [String: Any] {
                    let user = UserModel.transformDataToUser(dict: dict, id: snapshot.key)
                    completion(user)
                } else {
                    onError("No userdata found")
                }
            }
        }
    }

如果我重新启动应用程序-一切都还是一样的。如果我删除应用程序并再次安装-一切都工作正常。
Firebase等接缝可在手机上保存一些数据。
谢谢你的帮助!

g6ll5ycj

g6ll5ycj1#

如果您启用了磁盘持久性(iOS和Android的默认设置),客户端会存储最近看到的数据,以便以后能够更快地查找,并且observeSingleEvent(of会从缓存中返回值。
如果你想确保你从服务器上得到最新的值,请使用getData,如文档中关于一次性获取数据的说明所示。另外,请查看Firebase Offline Capabilities和addListenerForSingleValueEvent,以获得对该行为的更详细的解释。

相关问题