问题标签 [salat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Salat 没有反序列化映射到 Option[Set[A]] 的集合
我在 scala-salat Google group 中问了这个问题,但几天没有回复,因此在这里尝试。
我有一个案例类,其中包含一个包含在Option
.
该文档可以很好地存储在 Mongo 中。但是,当我尝试使用findOne
(使用或不使用SalatDAO
)来获取此地址时,addresses 字段具有表示地址的 JSON 文本,而不是 Address 案例类。
结果,Lift-JSON 跳过了我的案例类Option[Collection[A]]
中的任何字段。当我删除Option
并使用时addresses=Set[Address]()
,它可以工作。但是,现在我的 JSON 中没有数据的结果是空集,如果消费者删除了条目,我无法找到更新,或者我得到一个空集Set
,因为消费者没有发送这个字段原始请求。
使用Option
会将字段设置为None
,这意味着我不必担心它是空的或被修改。
任何帮助将不胜感激。
scala - 如何更新/删除嵌入对象
给定以下域模型:
我一直在使用 Salat 来帮助反序列化/反序列化这些对象。但是,鉴于我知道要删除/更新的对象的福利 ID,我对如何从员工对象的福利列表中删除/更新特定对象感到有些困惑?
我不想迭代完整的好处列表以更新单个对象,因为此列表在运行时可能包含大量对象。有没有比获取 emp 对象、迭代列表直到找到所需对象、更新它然后保存 emp 对象更好的方法?
scala - Casbah/Salat:如何查询包含部分字符串的字段?
我尝试使用 Casbah 和 Salat 编写查询来查询包含名称部分的字段。我尝试使用这样的正则表达式(在 SalatDAO 中):
与
该记录在 MongoDB 中,当我使用完整名称搜索它时,它可以工作。
告诉 casbah 搜索字符串的一部分的正确方法是什么?
我想修复的另一件事是参数的字符串连接。是否有任何默认方法可以使用 casbah 转义输入参数,因此该参数不会被解释为 javascript 命令?
最好的问候,奥利弗
scala - 如何查询 Array[String] 的正则表达式匹配?
我尝试通过 Casbah 在 MongoDB 中查询一个字段,该字段是带有正则表达式的字符串数组。
例如:
我有一个带有 ips 列表的 Maschine,它们作为字符串存储在字段 ips 中。现在我想搜索所有具有子网 192.168 的机器。
对我来说,我看起来无法使用应用于每个条目的正则表达式来查询数组,并且如果其中一个条目匹配则返回机器。
有什么方法可以进行这样的查询吗?
- 固定的
谢谢你的帮助。
现在一切正常。最后,我需要解决 Casbah 的一个限制,因为我需要使用 $or 加入查询,而 Casbah 抱怨缺少正则表达式的隐式。
我对带有其他字段的 RegExp 数组查询的最终代码是:
这不是最好的代码,需要修复参数的字符串连接。但它有效:)
scala - 将 Salat 与 MongoDB 一起使用时,处理复合键的最佳方法是什么?
我正在将 Salat 与 MongoDB 一起使用,并且我正在尝试转换为自然键以避免数据库中的重复。我使用的案例类看起来有点像:
我想添加一个由 someRelatedId+email 组成的自然键,并让 MongoDB 使用它而不是默认的 ObjectId。从文档中我觉得这是可能的,但我仍在摸索一个可行的解决方案。我敢肯定,这在很大程度上是由于我对 Scala 本身缺乏熟练程度。
更新:我现在有一个可行的解决方案,但我仍然想知道这是否是最好的方法
然后在 package.scala 中,我映射到自定义的 salat 上下文:
这样我就可以避免在我的域类中有一个强制性的(无意义的)_id 字段,但是我必须在伴生对象上重载 apply(),这看起来有点笨拙。
scala - 如何使用 Salat for mongodb 执行类似“IN”查询的 SQL?
我在 mongodb 中保存了许多具有以下结构的记录。
如何使用 salat 在 mongodb 上执行类似“IN”的查询?
例如
谢谢帕万
scala - 使用 Casbah / Salat 定义自定义序列化 - 或将序列化委托给成员?
我正在为一个来自 Rails 的新项目学习 Scala。我已经定义了一个将在我的许多模型中使用的类型,基本上可以将其视为“属性”的集合。它基本上只是一个 hashmap 的包装器,将它的大部分职责委托给它:
所以我会用 a 定义一个模型类Description
,比如:
但是,当我坚持Person
使用 SalatDAO 时,我最终会得到一个如下所示的文档:
实际上我不需要在attributes
标签中嵌套description
标签 - 我真正想要的是:
我没有尝试过,但我认为如果我Description
扩展 aMap
而不是包含一个,我可以让它工作,但我宁愿不这样做,因为 aDescription
不是 的类型Map
,它具有一些行为aMap
以及它自己的其他行为,我稍后会添加。组合优于继承等等。
所以我的问题是,我如何告诉 Salat(或 Casbah,实际上我有点不清楚是哪个在进行转换,因为我才刚刚开始使用它们)如何序列化和反序列化Description
类?在这里的 casbah 教程中说:
也可以创建自己的自定义类型序列化器和反序列化器。请参阅自定义序列化器和反序列化器。
但是这个页面似乎不存在。还是我走错了路?实际上有没有一种非常简单的方法来表明这是我想要发生的事情,注释或其他东西?或者我可以以某种方式简单地将序列化委托给属性映射吗?
编辑:在查看了 JodaTime 转换助手的源代码后,我尝试了以下方法,但还没有让它工作:
当我调用RegisterCustomConversionHelpers()
然后保存时,Person
我没有收到任何错误,它只是没有效果,以与以往相同的方式保存文档。对于我想要的东西,这似乎也有很多事情要做。
scala - Salat 错误:SalatDAO 所需的类文件丢失。com.mongodb.casbah.TypeImports 的引用类型 MongoCollection 引用不存在的符号
当我尝试扩展 SalatDAO 或使用 grater[T].asObject(x) 时出现以下错误:
SalatDAO 所需的类文件丢失。com.mongodb.casbah.TypeImports 的引用类型 MongoCollection 引用不存在的符号。
我遵循了 Salat 示例,但由于某种原因,扩展 SalatDAO 和 graters asObject 对我不起作用。我在网上找不到有关此错误的任何参考。
这是我的代码:
我非常感谢您对此的任何帮助或建议。我是 Scala 和 Mongodb 的新手。
我正在使用 sbt compile 进行编译。这是我的 build.sbt
scala - 玩!框架 2.0 scala - ClassCastException:models.MyModel 无法转换为 models.MyModel
这是我的第一个 play 2.0 应用程序,scala 对我来说仍然很新,所以我很可能在某个地方犯了错误。我正在使用一个非常新的插件,它捆绑了 Salat 和 Casbah:https ://github.com/leon/play-salat
我已经简化并重命名了所有内容以使其通用。
我的观点(views/MyController/search.scala.html
):
我的控制器(controllers/MyController.scala
):
我的模型:(models/MyModel.scala
):
我收到了这个错误:
这对我来说没有多大意义——有人遇到过这样的事情吗?
完整的堆栈跟踪:
scala - 我可以使用伴随对象来管理 Salat 案例类 DTO 的范围吗?
我一直在 Play2 webapp 中使用 Salat 进行 MongoDB 交互(通过 Leon Radley 的简洁 SBT 插件)。效果很好,但是由于嵌套(为了反映嵌套的 JSON/BSON 模型定义)我们有许多案例类 DTO,我们希望在基本模型类型的伴随对象中巧妙地定义嵌套的案例类 DTO。
这可以防止在我们的 Salat 数据访问层中激增的案例类 DTO 中的命名空间冲突。例如,我们定义了一个“描述”案例类,但它为不同的模型对象重新定义,所以我们想要一种简洁的方式来命名它。为此,我们尝试使用伴随对象,就像在这个小片段/示例中一样:
这一切都编译得很漂亮,但在运行时失败并出现com.novus.salat.util.ToObjectGlitch:在从 Mongo 解组期间参数类型不匹配。
如果我们简单地将伴随对象定义转换为包定义(封装 DTO 汤的一种稍微混乱的方式),那么一切都运行良好(解组是一种享受)。
我很困惑为什么在对象中声明案例类在运行时失败;在对象中定义案例类(Salat DTO)是否有技巧?