【发布时间】:2015-03-06 09:56:34
【问题描述】:
关于 mongoDB,一切都很清楚,关于这个主题已经写了很多。使用 javascript 语法(first_name 甚至更好的“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 Macro Inception 并且不编写自定义读取器和写入器),我必须像这样更改这些类
case class User (... p_inf: PersonalInfo, ...)
case class PersonalInfo (... f_nm: FullName, ...)
case class FullName (fn: String, mn: Option [String], ln: String)
但是这段代码对我来说看起来很难看(因为减少了单词,还有一个整体风格)
val firstName = user.p_inf.f_nm.fn
我要为字段创建另一个常量,然后在 javascript/html 代码中使用(这里适合这种样式),例如
trait JsFields {
val jsFirstName = "p_inf.f_nm.fn"
}
user.scala.html:
import ... JsFields._
<input name="@jsFirstName" />
所以 MongoDB 和 JS/html 样式是合适的,但业务逻辑不是。 请结合 MongoDB/Play 框架和 Scala/Html/JS 编写最佳命名实践。请提供示例(例如上面的字段)。
【问题讨论】:
标签: mongodb scala playframework