Kotlin FireBase читать объект из БД - PullRequest
0 голосов
/ 25 апреля 2020

У меня проблема с чтением объекта из БД без чтения отдельных полей и восстановления объекта вручную. Простой пример кода.

Это моя модель:

    data class Ingredient(val name: String, val quantity: Int){

    }

                                        // yes, just one ingredient for the moment =)
    data class Recipe(val name: String, val ingredient: Ingredient){

    }

Затем я сохраняю экземпляр на БД:

    val i1 = Ingredient("ing1", 300)
    val r = Recipe("rec1", i1)
    val db = FirebaseFirestore.getInstance()
    db.collection("recipies").document(r.name).set(r.ingredient)

Наконец, я пытаюсь прочитать ингредиент:

    db.collection("recipies").document(r.name).addSnapshotListener {
            documentSnapshot, _ ->
        if(documentSnapshot != null){
            val ingredient: Ingredient? = documentSnapshot.get("ingredient", Ingredient::class.java)
        }
    }

Проблема в том, что ингредиент нулевой. Как я могу решить проблему?

У меня была модель со списком, но я обнаружил, что даже этот более простой пример не работает.

Это структура БД: db

1 Ответ

0 голосов
/ 26 апреля 2020
db.collection("recipies").document(r.name).addSnapshotListener {
        val ingredient = documentSnapshot?.toObject(Ingredient::class.java) //<-- Use .toObject instead
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...