Scala的好处之一就是您可以安全的方式,因此应用程序中不会出现未定义的值。然而,Mongo根本不安全。所以,我认为,Mongo的一种转换是很好的,以确保只有正确的值被保存(作为字符串)。我有这种类型的在我的斯卡拉:在Lift的记录框架中创建专门的字段
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的记录文档似乎很稀疏,到目前为止我还没有找到任何有关如何做到这一点的有用信息。也许这里有人可以给我一些提示?