有没有办法使用Playframework Json宏生成的格式进行部分实体验证?

时间:2015-07-20 10:11:03

标签: json mongodb scala macros

我的程序堆栈是ReactiveMongo 0.11.0,Scala 2.11.6,Play 2.4.2。

我正在向我的控制器添加PATCH功能支持。我希望它是类型安全的,因此PATCH不会弄乱Mongo中的数据。

这样做的当前肮脏解决方案是

  1. 首先从Mongo读取对象,
  2. 使用提供的补丁
  3. 执行JsObject.deepMerge
  4. 检查该值仍可以反序列化为目标类型。
  5. 将合并对象序列化回JsObject,并检查该补丁是否仅包含合并Json中存在的字段(以便没有向存储对象添加垃圾)
  6. 在mongo上调用实际$ set
  7. 这显然不完美,但工作正常。我会编写宏来生成适当的格式泛化,但可能需要花费太多时间,这是我目前所缺乏的。

    有没有办法使用Playframework Json宏生成的格式进行部分实体验证? 或者任何其他解决方案,可以轻松集成到Playframework中。

1 个答案:

答案 0 :(得分:0)

在@ julien-richard-foy的帮助下建了一个小型图书馆,做了我想要的。

https://github.com/clemble/scala-validator

需要添加一些文档,我会将其发布到存储库。