首页 > 解决方案 > Mongo 和 Kotlin 的委托问题

问题描述

我最近一直在使用Kmongo 库和 Kotlin,但是我在 Kmongo 上提出了一个问题,但我不确定它是否与库有关。

我正在尝试将我的数据保存到我的 mongo 数据库(版本 4.2.2)

@Serializable
data class Person(val firstname: String, val lastname: String){

   val fullName
     get() = "$lastname $firstname"
}

当我插入数据时,我只发送了一个这样的对象:val person = Person("John", "Doe") 但是当我检查我的 mongo 数据库时

db.persons.find()
> { "_id" : ObjectId("5e2da298159243f9894d3834"), "firstname" : "John", "lastname" : "Doe", "fullName" : "Doe John" }

如何防止fullName保存在我的数据库中?

编辑:

我试图@Transient在我的变量上使用注释,但它不起作用,并且我收到一条检查消息说:Property does not have backing field which makes it non-serializable and therefore @Transient is redundant

标签: kotlinserializationcomputed-propertieskotlinx.serializationkmongo

解决方案


这一天,Kmongo 库在后台使用 Jackson,以避免解析我不得不使用的属性:https ://www.concretepage.com/jackson-api/jackson-jsonignore-jsonignoreproperties-and-jsonignoretype

所以我的数据类的代码现在是:

@Serialiable
@JsonIgnoreProperties("fullName")
data class Person(...

推荐阅读