我有一个接收JSON主体的控制器。其中一个字段是yyyy-mm-dd
形式的日期。我想要做的是将此字段转换为适合BSONDateTime的格式,并让ReactiveMongo执行插入。
我认为:
((__ \ 'myDate).json.pickBranch(Reads.of[JsString] andKeep toDateFormat))
我该如何进行这种转变?
答案 0 :(得分: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))}) )