有没有办法使用 Playframework Json 宏生成格式进行部分实体验证?
Is there a way to use Playframework Json macro generated format for partial entity validation?
我的程序堆栈是 ReactiveMongo 0.11.0,Scala 2.11.6,Play 2.4.2。
我正在为我的控制器添加 PATCH 功能支持。我希望它是类型安全的,这样 PATCH 就不会弄乱 Mongo.
中的数据
当前的肮脏解决方案是
- 首先从 Mongo 读取对象,
- 使用提供的补丁执行 JsObject.deepMerge,
- 检查该值仍然可以反序列化为目标类型。
- 将合并的对象序列化回 JsObject,并检查该补丁仅包含合并中存在的字段 Json(这样就不会向存储的对象添加垃圾)
- 在 mongo
调用实际 $set
这显然不完美,但效果很好。我会编写宏来生成适当的格式泛化,但这可能会花费太多时间,而我目前缺少这些时间。
有没有办法像这样使用 Playframework Json 宏生成格式进行部分实体验证?
或者任何其他解决方案,可以很容易地集成到 Playframework 中。
在@julien-richard-foy 的帮助下制作了一个小型图书馆,完全按照我的意愿去做。
https://github.com/clemble/scala-validator
需要添加一些文档,我会将其发布到存储库。
我的程序堆栈是 ReactiveMongo 0.11.0,Scala 2.11.6,Play 2.4.2。
我正在为我的控制器添加 PATCH 功能支持。我希望它是类型安全的,这样 PATCH 就不会弄乱 Mongo.
中的数据当前的肮脏解决方案是
- 首先从 Mongo 读取对象,
- 使用提供的补丁执行 JsObject.deepMerge,
- 检查该值仍然可以反序列化为目标类型。
- 将合并的对象序列化回 JsObject,并检查该补丁仅包含合并中存在的字段 Json(这样就不会向存储的对象添加垃圾)
- 在 mongo 调用实际 $set
这显然不完美,但效果很好。我会编写宏来生成适当的格式泛化,但这可能会花费太多时间,而我目前缺少这些时间。
有没有办法像这样使用 Playframework Json 宏生成格式进行部分实体验证? 或者任何其他解决方案,可以很容易地集成到 Playframework 中。
在@julien-richard-foy 的帮助下制作了一个小型图书馆,完全按照我的意愿去做。
https://github.com/clemble/scala-validator
需要添加一些文档,我会将其发布到存储库。