为什么Firestore DocumentSnapshot.exist()总是“ false” addOnCompleteListener?

时间:2019-06-04 16:33:25

标签: android firebase google-cloud-firestore

我正在创建基本应用程序以从Firestore检索用户数据,并且如果用户是新用户(在Firestore中,即文档不应该存在),我会添加欢迎词(向DB提供一些默认数据)。

private fun createUserIfNeeded(user: FirebaseUser) {
    fireBaseFireStore.collection("Users").document(user.uid).get().addOnCompleteListener {
        if (it.isSuccessful && !it.result!!.exists()) {
            val defaultData = 
                hashMapOf("head" to "Hello", "body" to "Welcome to NoteIt...")

            fireBaseFireStore
                .collection("Users")
                .document(user.uid)
                .collection("Notes")
                .document("Default")
                .set(defaultData)
        }
    }
}

当我在上面运行代码时,即使文档存在,document.result.exist也总是false

我尝试使用addOnSuccessListener也是同样的结果。

我做错什么了吗?

我提到了许多与此相关的问题,但解决方案有所帮助。

PS:Firebase及其API的新手

更新: 如果我要检查内部集合和文档中的任何一个,那么结果就可以正常工作

private fun createUserIfNeeded(user: FirebaseUser) {
        val notesRef = fireBaseFireStore
            .collection("Users")
            .document(user.uid)
            .collection("Notes")

        notesRef
            .get()
            .addOnCompleteListener {
                if (it.result == null || it.result!!.documents.size == 0) {
                    val defaultData = hashMapOf("head" to "Hello", "body" to "Welcome to NoteIt...")
                    notesRef
                        .document("Default")
                        .set(defaultData)
                }
            }
    }

我无法理解问题所在。

1 个答案:

答案 0 :(得分:2)

尝试此操作,卸载应用程序并重新安装,有时在开发期间需要刷新您数据库的Firestore本地缓存版本

在开发时可能会错误地在Firestore控制台中查看错误的数据库,可以说您的应用程序具有开发人员版本和生产版本,只需要一点点咖啡,一个人就会看错东西