2

我有一个接收 JSON 正文的控制器。其中一个字段是表单的日期yyyy-mm-dd。我想做的是将此字段转换为适合 BSONDateTime 的格式并让 ReactiveMongo 执行插入。

我认为是这样的:

((__ \ 'myDate).json.pickBranch(Reads.of[JsString] andKeep toDateFormat))

我该如何进行这种转变?

4

1 回答 1

3

迈向进步的一步......我相信我可以执行以下操作将日期字符串转换为 JsNumber,然后反应式 mongo 可以处理:

((__ \ 'myDate).json.update(Reads.of[DateTime].map{ x => JsNumber(x.getMillis)}) )

事实证明,Play 有一些隐式来处理 Reads 类中的 Date 和 DateTime 对象。所以 Reads.of[DateTime] 有效。

更新:

要使其与Play-ReactiveMongo隐式 BSON 转换器一起使用,您需要使用“$date”键创建一个 JsObject,如下所示:

((__ \ 'tripDate).json.pickBranch(Reads.of[DateTime].map{ x => Json.obj("$date"->JsNumber(x.getMillis))}) )
于 2013-04-20T18:00:33.043 回答