Имя ключа документа коллекции Firebase, начинающееся с 'is_' Удален 'is' от имени ключа - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь сохранить подколлекцию в базе данных firestore, как показано ниже:

var storiesCollRef= mFirestore.collection("groups").document(documentID.toString()).collection("stories")
    var stories = Stories(
                is_attachement = if(imageList.isNotEmpty()) 1 else 0,
                numComments = 0,
                numLaughs = 0,
                original_image = firebaseImagesPath,
                storyText = edtStoryText.text.toString(),
                thumb_image = firebaseImagesPath,
                timestamp = Timestamp.now(),
                userName = PrefUtils.getFromPrefs(activity!!, PrefUtils.SIGNUP_FAMILY_TITLE, "").toString(),
                userid = PrefUtils.getFromPrefs(activity!!, PrefUtils.SIGNUP_USER_EMAIL, "").toString()
    )
    storiesCollRef.add(stories).addOnCompleteListener{task ->
        Log.d("story created", task.result?.id)
        if(task.isSuccessful){
            progressDialog?.dismiss()
            //open dashboard
            activity?.onBackPressed()
        }
    }

Класс модели

data class Stories(
val is_attachement: Int? = 0,
val numComments: Int? = 0,
var numLaughs: Int? = 0,
val original_image: ArrayList<String>? = null,
val storyText: String? = "",
val thumb_image: ArrayList<String>? = null,
val timestamp: Timestamp? = Timestamp.now(),
val userName: String? = "",
val userid: String? = "",
val docID: String? = ""){}

Он отлично хранит все данные, но меняет имя ' Поле is_attachement 'для attachment'. То же самое относится и к другим полям, начинающимся с 'is ', как 'is_migrate', а 'is_self_created' - это другие документы коллекции.

like this image

and this image

У кого-нибудь есть решение, пожалуйста, дайте мне знать заранее.

1 Ответ

0 голосов
/ 20 апреля 2020

Схема сериализации по умолчанию для объектов типа POJO на языках, основанных на JVM (таких как Kotlin и Java), удаляет «is» из имени члена для назначения имени свойства. Если вы не хотите, чтобы это поведение по умолчанию, вы должны аннотировать свойства с @ PropertyName , чтобы дать ему конкретное c имя.

Я скажу, однако, что использование подчеркивания в Kotlin неверные имена свойств Kotlin стиль. Вы должны использовать случай верблюда вместо этого. Кроме того, для свойств логического типа они должны быть Bool вместо Int.

См. Также: https://code.luasoftware.com/tutorials/google-cloud-firestore/firestore-change-kotlin-pojo-property-name-mapping/

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