我正在使用 Scala、Salat、Casbah、Mongo、Play2、BackboneJS 开展一个项目……但同时要学习很多新东西……我对 Scala 没问题,但我找到了我的代码蹩脚的,我真的不知道改进它的解决方案是什么。
基本上我的用例是:
- 一个MongoDB对象被Play2发送到浏览器的JS代码
- JS 代码更新对象数据(通过 Backbone 模型)
- JS 将更新后的 JSON 发送回服务器(由 Backbone 保存方法发送,并由 Play 使用 json bodyparser 接收)
- Play 收到的 JSON 应该更新 MongoDB 中的对象
- 出于安全原因,某些字段不应更新(对象 id、creationDate...)
我的问题是最后一部分。我使用带有 Salat 的案例类作为存储在 MongoDB 中的对象的表示。
我真的不知道如何处理从 JS 代码收到的 JSON。
我是否应该将 JSON 绑定到 Salat 案例类中,然后要求 Mongo 用全新的案例类对象覆盖以前的对象数据?如果是这样,Play2 或 Salat 有没有办法从收到的 JSON 中自动创建案例类?
我应该为我想要更新的字段单独处理我的 JSON 字段吗?
我应该使我的案例类的元素可变吗?这就是我们在 Java 中使用 Hibernate 所做的实际操作:从 DB 中获取对象,更改其状态,然后保存它。但这似乎不是使用 Scala 的合适方式......
如果有人可以为我的用例给我一些建议,那就太好了,因为我真的不知道该怎么做:(
编辑:我在这里问了一个相关问题:我应该用不可变或可变数据结构表示数据库数据吗?