MongoDB与Play Framework(Scala)结合使用的命名约定

MongoDB与Play Framework(Scala)结合使用的命名约定,mongodb,scala,playframework,Mongodb,Scala,Playframework,关于mongoDB,一切都很清楚,关于这个主题已经写了很多。使用javascript语法(名字和更好的“fn”来节省空间)。 但是scala代码中的工作(我使用camelCase)呢。例如,我会编写这样一个层次结构 case class User (... personalInfo: PersonalInfo, ...) case class PersonalInfo (... fullName: FullName, ...) case class FullName (firstName: St

关于mongoDB,一切都很清楚,关于这个主题已经写了很多。使用javascript语法(名字和更好的“fn”来节省空间)。 但是scala代码中的工作(我使用camelCase)呢。例如,我会编写这样一个层次结构

case class User (... personalInfo: PersonalInfo, ...)
case class PersonalInfo (... fullName: FullName, ...)
case class FullName (firstName: String, middleName: Option [String], lastName: String)
如果我想简单地使用mongoDB(即使用JSON宏Inception,而不编写自定义读写器),我必须像这样更改这些类

case class User (... p_inf: PersonalInfo, ...)
case class PersonalInfo (... f_nm: FullName, ...)
case class FullName (fn: String, mn: Option [String], ln: String)
但这段代码对我来说很难看(因为字数减少了,而且是一种整体风格)

我将为字段设置另一个常量,然后在javascript/html代码中使用它(这里使用这种样式),例如

trait JsFields {
val jsFirstName = "p_inf.f_nm.fn"
}
user.scala.html:

import ... JsFields._
<input name="@jsFirstName" />
导入。。。JsFields_
因此,MongoDB和JS/html样式是合适的,但业务逻辑不是。
请结合MongoDB/Play框架和Scala/Html/JS编写最佳命名实践。请举例说明(例如上面的字段)。

Mongo3使用Wired Tiger引擎添加了压缩功能,因此您可能不再需要或希望使用晦涩难懂的名称

实施的实际JIRA票据:

谢谢你@Jonathan Crosmer。这是个好消息。但如何与下划线在一起。在这种情况下,在Scala中写入personal_info.first_name是正常的做法吗?我不知道mongo+Scala+多字变量的正常做法是什么,但在我们的项目中,我们使用Scala命名约定,例如“personalInfo.firstName”。大多数时候,我们使用的是Scala代码,而不是Javascript。
import ... JsFields._
<input name="@jsFirstName" />