【问题标题】:Naming convention for MongoDB in combination with Play Framework (Scala)结合 Play Framework (Scala) 的 MongoDB 命名约定
【发布时间】: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


    【解决方案1】:

    Mongo 3 使用 Wired Tiger 引擎添加了压缩功能,因此您可能不再需要或不想使用晦涩的名称。

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

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

    【讨论】:

    • 谢谢@Jonathan Crosmer。这是个好消息。但如何与下划线。在这种情况下,在 Scala 中编写personal_info.first_name 是否正常?
    • 我不知道 mongo + scala + 多字变量的正常做法是什么,但在我们的项目中,我们使用 scala 命名约定,例如“personalInfo.firstName”。大多数时候,我们使用的是 Scala 代码,而不是 Javascript。
    猜你喜欢
    • 2012-12-26
    • 2022-01-27
    • 2019-10-13
    • 2014-12-06
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多