我正在用mongodb编写一个play2.1应用程序,我的模型对象有点广泛.当更新数据库中的条目时,我需要将来自表单的临时对象与数据库中的内容进行比较,这样我就可以构建更新查询(并记录更改).
我正在寻找一种方法来通常采取2个实例并得到它们的差异.迭代每个数据成员是长的,硬编码的和容易出错的(如果a.firstName.equalsIgnoreCase(b.firstName))所以我正在寻找一种方法迭代所有数据成员并水平比较它们(名称的地图 - >值将执行,或者我可以信任的列表,每次都以相同的顺序枚举数据成员).
有任何想法吗?
case class Customer(
id: Option[BSONObjectID] = Some(BSONObjectID.generate),
firstName: String,
middleName: String,
lastName: String,
address: List[Address],
phoneNumbers: List[PhoneNumber],
email: String,
creationTime: Option[DateTime] = Some(DateTime.now()),
lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)
Run Code Online (Sandbox Code Playgroud)
以下所有三个解决方案都很棒,但我仍然无法获得该领域的名称,对吧?这意味着我可以记录更改,但不会记录它影响的字段...
是否有可能在Akka(scala)中获得对现有ActorSystem的引用?
我正在与另一个DB的Actor一起开发Spray应用程序.我也在扩展Directives以获得每个路径的对象.指令本身不是actor,但是它们需要将消息传递给DBActor.这里:
class HttpActor extends Actor with HttpService {
val actorRefFactory = context
def receive = runRoute(
IndexService.route ~
HostsService.route
)
}
object HostsService extends Directives{
def route(implicit dm: DetachMagnet2) = {
path("hosts") {
get {
detach() {
**dbActor ! CreateHost**
complete("get me hosts!")
}
} ~
post {
detach() {
entity(as[String]) { payload =>
complete(s"post hosts $payload")
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让HostsService发现ActorSystem本身,这样他就可以找到DBActor,或者HttpActor是否必须将其传入?后者似乎不太优雅,因为HostsService需要成为一个类(而不是一个对象),因此不再是单例.
我期待创建一个表示数据大小(字节,KB ...)的类型系列.为此,我们的想法是建立一个基本类型,使其具有以下实际尺寸:
type SizeUnit = Int
type B = SizeUnit
type KB = SizeUnit
type MB = SizeUnit
type GB = SizeUnit
type TB = SizeUnit
type PB = SizeUnit
type EB = SizeUnit
type ZB = SizeUnit
type YB = SizeUnit
Run Code Online (Sandbox Code Playgroud)
有一个有序的列表:
val sizes = List(B, KB, MB, GB, TB, PB, EX, ZB, TB)
Run Code Online (Sandbox Code Playgroud)
并且有一个转换方法,它采用目标类型,找到它们之间的索引差异,并乘以差异的幂乘以1024.所以:
def convertTo(targetType: SizeUnit): SizeUnit ={
def power(itr: Int): Int = {
if (itr == 0) 1
else 1024*power(itr-1)
}
val distance = sizes.indexOf(targetType) - …
Run Code Online (Sandbox Code Playgroud) 听起来像是一个简单的问题,但我找不到答案(可能是因为在搜索“如何使用 Akka-HTTP 执行 HTTP/2.0”时,“2.0”被解释为 Akka 的版本)。
似乎 akka-http 确实有一个用于 HttpProtocols 的构造,但它只有 HTTP 1.0 和 HTTP 1.1。