我正在使用 Scala、Salat、Casbah、Mongo、Play2、BackboneJS 开发一个项目...但同时需要学习很多新东西...我对 Scala 没问题,但我找到了我的代码蹩脚,我真的不知道改进它的解决方案是什么。
基本上我的用例是:
- Play2 将 MongoDB 对象发送到浏览器的 JS 代码
- JS代码更新对象数据(通过Backbone模型)
- JS 将更新后的 JSON 发送回服务器(通过 Backbone save 方法发送,并由 Play 使用 json bodyparser 接收)
- Play 收到的 JSON 应该更新 MongoDB 中的对象
- 出于安全原因,某些字段不应更新(对象 ID、创建日期...)
我的问题是最后一部分。
我使用带有 Salat 的案例类作为存储在 MongoDB 中的对象的表示。
我真的不知道如何处理从 JS 代码收到的 JSON。
我是否应该将 JSON 绑定到 Salat 案例类中,然后要求 Mongo 用完整的新案例类对象覆盖以前的对象数据?
如果是这样,有没有办法使用 Play2 或 Salat 自动从收到的 JSON 创建回案例类?
我是否应该使用 $set 单独处理我要更新的字段的 JSON 字段?
我应该使案例类的元素可变吗?这就是我们在 Java 中实际执行的操作(以 Hibernate 为例):从数据库获取对象,更改其状态,然后保存它。但这似乎不是处理 Scala 的合适方法......
如果有人能为我的用例提供一些建议,那就太好了,因为我真的不知道该怎么做:(
编辑:我在这里问了一个相关问题:我应该用不可变或可变的数据结构来表示数据库数据吗?
Salat 使用 lift-json 处理 JSON - 请参阅https://github.com/novus/salat/wiki/SalatWithPlay2.
Play 本身使用 Jerkson,这是解码模型对象的另一种方法 - 请参阅http://blog.xebia.com/2012/07/22/play-body-parsing-with-jerkson/举个例子。
请随意制作一个小型示例 Github 项目来演示您的问题,并将其发布到 Salat 邮件列表:https://groups.google.com/group/scala-salat求助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)