Почему Firestore DocumentSnapshot.exist () всегда `false` addOnCompleteListener? - PullRequest
1 голос
/ 04 июня 2019

Я создаю базовое приложение для извлечения пользовательских данных из Firestore и, если пользователь новый (в Firestore, т. Е. Документ не должен существовать), я добавляю приветствие (некоторые данные по умолчанию в БД).

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 также тот же результат.

Я что-то не так делаю?

Я ответил на многие вопросы, связанные с этим, но решение помогло.

P.S: новинка в Firebase и его API

UPDATE: Если я пытаюсь проверить наличие какой-либо внутренней коллекции и документа, то результат работает нормально

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 Ответ

2 голосов
/ 04 июня 2019

попробуйте это, деинсталлируйте приложение и переустановите, иногда необходимо обновить версию локального кэша Firestore вашей db, во время разработки

При разработке можно по ошибке просмотреть неправильную БД в консоли Firestore, скажем, у вашего приложения есть версия для разработчика и рабочая версия, к небольшому количеству кофе, и можно посмотреть на неправильные вещи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...