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

时间:2015-03-06 09:56:34

标签: mongodb scala playframework

关于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样式是合适的,但业务逻辑不是。 请将最好的命名实践与Scala / Html / JS一起编写MongoDB / Play Framework。请提供示例(例如上面的字段)。

1 个答案:

答案 0 :(得分:0)

Mongo 3使用有线Tiger引擎增加压缩,因此您可能不再需要或不想使用模糊名称。

https://comerford.cc/2014/11/12/mongodb-2-8-new-wiredtiger-storage-engine-adds-compression/

实施它的实际JIRA票证: https://jira.mongodb.org/browse/SERVER-164