Scala 创建电梯和x27的专业领域;s记录框架

Scala 创建电梯和x27的专业领域;s记录框架,scala,mongodb,lift,Scala,Mongodb,Lift,Scala的一个很好的优点是可以实现类型安全,这样应用程序中就不会出现未定义的值。然而,Mongo完全不是类型安全的。因此,我认为,在Mongo之间进行一种转换是很好的,以确保只保存正确的值(作为字符串)。我的Scala中有这种类型: sealed trait Tribe object Tribe { def fromString(s:String) = s match { case "Earth Pony" => EarthPony case "Pegasus" =

Scala的一个很好的优点是可以实现类型安全,这样应用程序中就不会出现未定义的值。然而,Mongo完全不是类型安全的。因此,我认为,在Mongo之间进行一种转换是很好的,以确保只保存正确的值(作为字符串)。我的Scala中有这种类型:

sealed trait Tribe

object Tribe {
  def fromString(s:String) = s match {
    case "Earth Pony" => EarthPony
    case "Pegasus" => Pegasus
    case "Unicorn" => Unicorn
    case "Alicorn" => Alicorn
    case _ => throw new NoSuchElementException
  }
}

case object EarthPony extends Tribe {
  override def toString = "Earth Pony"
}

case object Pegasus extends Tribe {
  override def toString = "Pegasus"
}

case object Unicorn extends Tribe {
  override def toString = "Unicorn"
}

case object Alicorn extends Tribe {
  override def toString = "Alicorn"
}
现在我想创建一个字段
TribeField
,我可以在
MongoRecord
类中使用它,以确保在读取记录或保存记录时完成此转换


不幸的是,Lift记录上的文档似乎很少,到目前为止,我还没有找到任何关于如何做到这一点的有用信息。也许这里有人可以给我一些提示?

我很确定lift record mongodb使用lift record字段实例的功能,通过Field.asJValue和Field.setFromJValue对JSON进行序列化/反序列化。要创建一个完全类型安全的部落字段,您需要创建自己的TypedField[Tribe],并实现这些方法以及设置和访问字段的其他抽象方法。我建议大家看看StringField或其他具体的字段类型,看看如何做

一个更简单的替代方法是扩展StringField本身并添加setTribe/asTribe方法

如果您需要更多信息,特别是关于Lift的Mongodb集成的信息,我建议您尝试Lift Google Group。Tim Nelson坚持认为代码对问题的反应通常非常快