Scala 在reactivemongo中找不到BSON编写器的隐式值

Scala 在reactivemongo中找不到BSON编写器的隐式值,scala,implicit,reactivemongo,Scala,Implicit,Reactivemongo,我有一个非常简单的case类,它是一个更大的case类的一部分 case class PublisherStatus(status: String) case class Publisher(id: Option[BSONObjectID], name: String, status: PublisherStatus, keywords: List[String], updatedAt: Option[DateTime], outputChannelIP: String, outputChann

我有一个非常简单的case类,它是一个更大的case类的一部分

case class PublisherStatus(status: String)
case class Publisher(id: Option[BSONObjectID], name: String, status: PublisherStatus, keywords: List[String], updatedAt: Option[DateTime], outputChannelIP: String, outputChannelName: String)
我为它定义了BSON阅读器和编写器,如下所示

  implicit object StatusBSONReader extends BSONDocumentReader[PublisherStatus] {
    def read(doc: BSONDocument): PublisherStatus =
      PublisherStatus(
        doc.getAs[String]("status").get
      )
  }

  implicit object StatusBSONWriter extends BSONDocumentWriter[PublisherStatus] {
    def write(status: PublisherStatus): BSONDocument =
      BSONDocument(
        "status" -> status.status)
  }
但是,当我尝试执行以下操作时,会出现编译错误

  def updateState(id: String, s: String) {
    import models.PublisherBSONWriter._
    implicit val statusWrites = Json.writes[PublisherStatus]
    val objectId = new BSONObjectID(id)
    val status = PublisherStatus(s)
    val modifier = BSONDocument("$set" -> status)

    val updateFuture = collection.update(BSONDocument("_id" -> objectId), modifier)

  }
错误-

could not find implicit value for parameter writer: reactivemongo.bson.BSONWriter[models.PublisherStatus, _ <: reactivemongo.bson.BSONValue]
[error]     val modifier = BSONDocument("$set" -> status)
[error]                                        ^
[error] one error found
[error] (compile:compile) Compilation failed
找不到参数writer的隐式值:reactivemongo.bson.BSONWriter[models.PublisherStatus,uu状态)
[错误]^
[错误]发现一个错误
[错误](编译:编译)编译失败

发布者状态的读者和作者不应该是
BSONDocumentReader
BSONDocumentWriter
,而应该是
BSONReader
BSONWriter

或者,为了让事情变得更简单,可以使用一个
BSONHandler

implicit val bson = new BSONHandler[BSONString, PublisherStatus] {
  def read(bson: BSONString) = PublisherStatus(bson.value)
  def write(status: PublisherStatus) = BSONString(status.status)
}