Javascript 可以强制morphia将ObjectId映射到十六进制表示吗?
我目前正在研究kotlin多项目解决方案。 我有一个项目定义了一些数据类,并定义了一个api来访问mongodb。objectId是自动创建的。本项目使用的是morphia:1.3.2。 使用此功能存储条目:Javascript 可以强制morphia将ObjectId映射到十六进制表示吗?,javascript,mongodb,spring-boot,kotlin,morphia,Javascript,Mongodb,Spring Boot,Kotlin,Morphia,我目前正在研究kotlin多项目解决方案。 我有一个项目定义了一些数据类,并定义了一个api来访问mongodb。objectId是自动创建的。本项目使用的是morphia:1.3.2。 使用此功能存储条目: fun store(myClass: MyClass) = db.save(myClass).let { myClass.id?.toHexString() ?: "0" } 现在我正在SpringBootKotlin项目中使用这个项目。 我用一些过滤器创建了一个小网页。这些过滤器应该应
fun store(myClass: MyClass) = db.save(myClass).let { myClass.id?.toHexString() ?: "0" }
现在我正在SpringBootKotlin项目中使用这个项目。
我用一些过滤器创建了一个小网页。这些过滤器应该应用于我的查询。到目前为止一切正常
查询结果通过Rest控制器返回,无需任何转换。在我的网页中,我想打印每个结果的ObjectId
但是ObjectId不像以前那样是字符串,它是一个对象
id:
counter:15304909
date:"2018-08-27T23:45:35.000+0000"
machineIdentifier:123456
processIdentifier:1234
time:1535413535000
timeSecond:1535413535
timestamp:1535413535
可以强制morphia在字符串表示中返回objectId吗?或者是否有打开选项来激活正确的映射?或者我必须逐个触摸每个结果并将对象id转换为十六进制字符串表示形式吗?我希望有一个更好、更快的解决方案
我也无法将对象重新映射到有效id,因为在请求目标中找到了java.lang.IllegalArgumentException:无效字符。有效字符在RFC 7230和RFC 3986中定义。请求如下所示:
myClass?id={"timestamp":1535413631,"machineIdentifier":123456,"processIdentifier":1234,"counter":16576969,"time":1535413631000,"date":"2018-08-27T23:47:11.000+0000","timeSecond":1535413631}
我对如何解决这个问题有点不知所措。根据您的REST框架,您需要提供一个序列化程序,将ObjectId作为字符串版本写入。大多数这样的框架在配置之后都是透明的,因此您只需担心从REST服务返回对象,框架就会正确序列化
一、 就个人而言,他不会试图改变它在数据库中的序列化方式。ObjectId是一个非常好的\u id
类型,我不会更改它。使用正确的关键字,这是一项简单的任务。这也许有一天会对某人有所帮助: