responsetivemongo, не удалось найти неявное значение для чтения параметров
Я делаю тесты с реактивомонго
В моем контроллере у меня есть это:
package controllers
import models._
import models.JsonFormats._
import play.modules.reactivemongo.MongoController
import scala.concurrent.Future
import reactivemongo.api.Cursor
import org.slf4j.{LoggerFactory, Logger}
import javax.inject.Singleton
import play.api.mvc._
import reactivemongo.api.collections.default.BSONCollection
import reactivemongo.bson._
@Singleton
class Users extends Controller with MongoController {
private final val logger: Logger = LoggerFactory.getLogger(classOf[Users])
val collection = db[BSONCollection]("users")
// list all articles and sort them
def list = Action.async { implicit request =>
// get a sort document (see getSort method for more information)
val sort = getSort(request)
// build a selection document with an empty query and a sort subdocument ('$orderby')
val query = BSONDocument(
"$orderby" -> sort,
"$query" -> BSONDocument())
val activeSort = request.queryString.get("sort").flatMap(_.headOption).getOrElse("none")
// the cursor of documents
val found = collection.find(query).cursor[User]
// build (asynchronously) a list containing all the articles
found.collect[List]().map { users =>
Ok(views.html.admin.list(users, activeSort))
}.recover {
case e =>
e.printStackTrace()
BadRequest(e.getMessage())
}
}
...........
}
и в моей модели у меня есть это:
модельные комплекты
import reactivemongo.bson._
case class User(
nickName: String,
email: String,
password: String,
active: Boolean
)
object JsonFormats {
import play.api.libs.json.Json
// Generates Writes and Reads for Feed and User thanks to Json Macros
implicit val userFormat = Json.format[User]
}
При компиляции проекта возвращается следующая ошибка:
не удалось найти неявное значение для средства чтения параметров: реактивный mongo.bson.BSONDocumentReader[models.User]
в этой строке проблема:
val found = collection.find (query).cursor [Пользователь]
Может кто-нибудь сказать мне, где я не прав или что мне не хватает, пожалуйста?
2 ответа
У вас не определен неявный обработчик для сопоставления вашего класса модели с BSONDocument
, Вы можете реализовать это самостоятельно, или, как вы это сделали для JsonFormats
Вы можете использовать макросы, предоставляемые ReactiveMongo.
object BsonFormats {
import reactivemongo.bson.Macros
implicit val userFormat = Macros.handler[User]
}
В качестве альтернативы, вместо BSONCollection
Вы могли бы использовать JSONCollection
предоставляется Play-ReactiveMongo для выполнения сопоставления с использованием формата JSON, который вы уже определили.
Для меня, я все еще получаю ошибку, даже после того, как я объявил последствия для обоих bson
а также json
формат. Что мне нужно сделать, это просто импортировать это:
import reactivemongo.api.commands.bson.BSONCountCommandImplicits._