Play2 + Casbah:如何为 ObjectId 提供隐式写入
Posted
技术标签:
【中文标题】Play2 + Casbah:如何为 ObjectId 提供隐式写入【英文标题】:Play2 + Casbah: How to provide an implicit Writes for ObjectId 【发布时间】:2013-03-29 22:29:56 【问题描述】:有一个简单的模型类,其中包含一些数据库 ID。它看起来像这样:
case class Post(id: ObjectId, owner: Option[ObjectId], title: String)
object Post
implicit val implicitPostWrites = Json.writes[Post]
使用此代码,编译器给我以下错误:
com.mongodb.casbah.commons.TypeImports.ObjectId 没有可用的隐式写入。 隐式 valimplicitFooWrites = Json.writes[Foo]
很明显缺少什么,但我不知道如何为 com.mongodb.casbah.commons.TypeImports.ObjectId 提供隐式写入。如何做到这一点?
【问题讨论】:
【参考方案1】:该错误表示它不知道如何序列化ObjectId
,并希望您为其提供Writer
。这是序列化它的一种方法:
object Post
implicit val objectIdWrites = new Writes[ObjectId]
def writes(oId: ObjectId): JsValue =
JsString(oId.toString)
implicit val implicitPostWrites = Json.writes[Post]
更多信息和解释可通过here获得。
【讨论】:
以上是关于Play2 + Casbah:如何为 ObjectId 提供隐式写入的主要内容,如果未能解决你的问题,请参考以下文章
LINQ to Object - 如何为子组实现 WHERE 子句“如果至少有一个元素是”