Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以强制morphia将ObjectId映射到十六进制表示吗?_Javascript_Mongodb_Spring Boot_Kotlin_Morphia - Fatal编程技术网

Javascript 可以强制morphia将ObjectId映射到十六进制表示吗?

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项目中使用这个项目。 我用一些过滤器创建了一个小网页。这些过滤器应该应

我目前正在研究kotlin多项目解决方案。 我有一个项目定义了一些数据类,并定义了一个api来访问mongodb。objectId是自动创建的。本项目使用的是morphia:1.3.2。 使用此功能存储条目:

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
类型,我不会更改它。

使用正确的关键字,这是一项简单的任务。这也许有一天会对某人有所帮助: