我是ReactiveMongo的新手,我想为一个对象创建一个自定义文档阅读器/编写器,但是我收到了这个错误
type mismatch; found :
reactivemongo.bson.BSONDocumentReader[reactivemongo.bson.BSONDocument]
required:
reactivemongo.bson.BSONDocumentReader[db.DataBase.Estudiante] Note:
implicit object EstudianteReader is not applicable here because it
comes after the application point and it lacks an explicit result type
Error occurred in an application involving default arguments.
这是我的代码,基于我在reactivemongo官方网页上找到的example。
package db
import scala.concurrent.ExecutionContext.Implicits.global
import reactivemongo.api._
import reactivemongo.bson._
object DataBase {
//Driver para la conexion
val driver = new MongoDriver
//Conexion con mongoDB
val connection = driver.connection(List("localhost"))
//Conexion con la base de datos AMDB
val db = connection("reactive")
//Colección domainNames que se encuentra en la base de datos AMDB
val collection = db("estudiantes")
def findAllDomainNames() = {
val query = BSONDocument()
collection.find(query).cursor[Estudiante]
//.cursor[BSONDocument].collect[List]()
}
case class Estudiante(id: Option[BSONObjectID], nombre: String, apellidos: String, edad: Int)
object Estudiante {
implicit object EstudianteWriter extends BSONDocumentWriter[Estudiante] {
def write(estudiante: Estudiante): BSONDocument = {
BSONDocument(
"_id" -> estudiante.id.getOrElse(BSONObjectID.generate),
"nombre" -> estudiante.nombre,
"appellidos" -> estudiante.apellidos,
"edad" -> estudiante.edad.toString)
}
}
implicit object EstudianteReader extends BSONDocumentReader[Estudiante] {
def read(doc: BSONDocument): Estudiante = {
Estudiante(
doc.getAs[BSONObjectID]("_id"),
doc.getAs[String]("nombre").get,
doc.getAs[String]("appellidos").get,
doc.getAs[Int]("edad").get)
}
}
}
def main(args: Array[String]) {
println(findAllDomainNames);
}
}
缺少什么/错了?
提前谢谢大家!
答案 0 :(得分:0)
将对象Estudiante
的声明移到DataBase
上方并在DataBase
范围内添加导入:
import Estudiante._