如何使用不可变的 Salat 案例类更新 Mongo 中的对象

2023-12-06

我正在使用 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(使用前将#替换为@)

如何使用不可变的 Salat 案例类更新 Mongo 中的对象 的相关文章

  • [json4s]:提取不同对象的数组

    我正在使用 facebook graph API 响应看起来与此类似 data id 311620272349920 311718615673419 from id 1456046457993048 name Richard Ettinso
  • ebean 映射到 BYTEA 的数据类型是什么?

    我有一个游戏 2 0 2 需要在数据库中存储一些文件的应用程序 我们使用 Ebean 作为 ORM 我相信我的数据库中需要一个 BYTEA 列来存储该文件 但我不确定在我的模型中使用什么数据类型 我应该使用某种Blob 或者只是一个byte
  • Scala 警告、IntelliJ 和编译器标志

    我目前正在试用 IntelliJ Scala 插件 有件事让我有点烦恼 编译时我收到 3 个警告 Warning scala Recompiling 4 files Warning scala Warning scala there wer
  • MongoDB 将数字转换为科学计数法的字符串

    我想获得完整的号码String 但反而 1490650000000 它返回科学计数法 1 49065e 12 这是我尝试转换它的方法 substr myNumber 0 1 有什么想法如何预防吗 Note 我使用的是v3 6 无法升级使用
  • akka-http:找不到参数解组的隐式值

    我的 Spray json 支持看起来像这样 object MarshallingSupport extends SprayJsonSupport implicit def json4sFormats Formats DefaultForm
  • 多文档事务在使用 mongodb 4.08 社区服务器的 C# 中不起作用

    我需要使用 mongodb 事务更新多个文档 mongodb 社区服务器版本是 4 08 net 的 mongodb 驱动程序是 2 9 beta 也尝试过 2 8 从调试中 我可以看到它执行了 session AbortTransacti
  • Mongoose 4.4.12 中 Schema 方法范围内的“this”为空 {}

    当在 Schema 方法内记录到控制台时 对象 this 为 这发生在一天前 我一直在阅读教程和其他堆栈溢出问题 但不幸的是我没有找到原因的解决方案 这是我的模型 var mongoose require mongoose var Sche
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • 错误:无法在 scala 中找到或加载主类

    安装 eclipse scala 插件和 eclipse maven scala 插件后 我是 scala 新手 所以我尝试确保在测试 scala hello world 项目后环境正常工作 它按预期工作 但我在尝试执行我从公司存储库中签出
  • 清理 MongoDB 的输入

    我正在为 MongoDB 数据库程序编写 REST 接口 并尝试实现搜索功能 我想公开整个 MongoDB 接口 我确实有两个问题 但它们是相关的 所以我将它们放在一篇文章中 使用 Python json 模块解码不受信任的 JSON 是否
  • play20 ebean 生成的 sql 在 postgresql 上抛出语法错误

    我正在尝试使用 postgresql 来启动我的 play20 应用程序 以便我可以使用并稍后部署到 Heroku 我跟着这个answer https stackoverflow com questions 12195568 errors
  • Scalaz 拆箱标记类型不会自动拆箱

    Reading http eed3si9n com learning scalaz Tagged type html http eed3si9n com learning scalaz Tagged type html并尝试示例代码 imp
  • MongoDB 存储过程等效项

    我有一个包含商店列表的大型 CSV 文件 其中一个字段是邮政编码 我有一个名为 ZipCodes 的独立 MongoDB 数据库 它存储任何给定邮政编码的纬度和经度 在 SQL Server 中 我将执行一个名为 InsertStore 的
  • mongo BadValue 未知运算符:$or

    该集合有一份文档 id ObjectId 54b513933aca242d9915a787 carriers carrier ObjectId 54b54d223aca242d9915a788 carryingInterval from I
  • 对 Spark 数据集中的数字字符串进行排序

    假设我有以下内容Dataset productCode amount XX 13 300 XX 1 250 XX 2 410 XX 9 50 XX 10 35 XX 100 870 Where productCode is of Strin
  • 阻止 Mongoose 为子文档数组项创建 _id 属性

    如果您有子文档数组 Mongoose 会自动为每个子文档创建 id 例子 id mainId subDocArray id unwantedId field value id unwantedId field value 有没有办法告诉 M
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • 将 DOCTYPE 添加到 Scala XML 的最简单方法?

    我怎样才能在 Scala XML 中制作这个最小的 HTML5 p p 当然 在 Scala 中制作类似 HTML 的 XML 很简单 gt val html p p html scala xml Elem p p 但是 我怎样才能注入DO
  • 承诺的反面是什么?

    承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
  • MongoDB 嵌套数组查询

    我问这个作为评论another https stackoverflow com questions 5250652 query a nested array in mongodb问题 还发了一个question https groups g

随机推荐