Cloud Firestore で プロパティ名を指定する方法
はじめに
今回はFirestoreの保存するプロパティ名を指定する方法を紹介します。
オブジェクトへの変換方法については以下の記事も参考にしてみてください。
解決
@PropatyName
を使用して保存されるプロパティ名を指定することができます。
/** * メッセージ 作成(送信)リクエスト * * @property id メッセージID * @property roomId メッセージルームID * @property senderId メッセージ送信者ID * @property type メッセージの種類 * @property content メッセージの内容 */ data class MessageSendRequest( val id: String, @get:PropertyName(value = "room_id") val roomId: String, @get:PropertyName(value = "sender_id") val senderId: String, val type: String, val content: String ) { /** * 既読フラグ */ @get:PropertyName(value = "isRead") val isRead: Boolean = false /** * 作成日 */ @ServerTimestamp val createdAt: Date? = null /** * 更新日 */ @ServerTimestamp val updatedAt: Date? = null }
注意点1
isRead
というような is
から始まるBooleanのプロパティ名には注意してください。
isRead
を保存すると read
というプロパティ名に自動で変換されて保存されるようです。
Firestoreでも isRead
として保存したい場合は、以下のように@PropatyName
を付与する必要があります。
@get:PropertyName(value = "isRead") val isRead: Boolean = false
注意点2
@ServerTimestamp
が購読時にnullになるケースについてはこちらの記事を参考にしてください。