2016-03-23 2 views
0

Я попытался использовать библиотеку Json для замены библиотеки Bson. Это оригинальный код, который работает.Получить сообщение об ошибке во время tring переписать ReactiveMongo + BSON в JSON в Play Framework

case class City(name: String, population: Int) 

object City { 
    implicit val reader = Macros.reader[City] 
} 

@Singleton 
class CityController @Inject()(val reactiveMongoApi: ReactiveMongoApi)(implicit exec: ExecutionContext) extends Controller with MongoController with ReactiveMongoComponents { 
    def findByMinPopulation(minPop: Int) = Action.async { 
    import citiesBSON.BatchCommands.AggregationFramework.Match 
    val futureCitiesList: Future[List[City]] = citiesBSON.aggregate(
     Match(BSONDocument("population" -> BSONDocument("$gte" -> minPop))) 
    ).map(_.head[City]) 
    futureCitiesList.map { cities => 
     Ok(Json.toJson(cities)) 
    } 
    } 
} 

И это код с использованием Json, который компилирует, но получает сообщение об ошибке при запуске.

case class City(name: String, population: Int) 

object City { 
    implicit val formatter = Json.format[City] 
} 

@Singleton 
class CityController @Inject()(val reactiveMongoApi: ReactiveMongoApi)(implicit exec: ExecutionContext) extends Controller with MongoController with ReactiveMongoComponents { 
    def findByMinPopulation(minPop: Int) = Action.async { 
    import cities.BatchCommands.AggregationFramework.Match 
    val futureCitiesList: Future[List[City]] = cities.aggregate(
     Match(Json.obj("population" -> Json.obj("$gte" -> minPop))) 
    ).map(_.head[City]) 
    futureCitiesList.map { cities => 
     Ok(Json.toJson(cities)) 
    } 
    } 
} 

И это сообщение об ошибке я получил:

[RuntimeException: (, List (ValidationError (List (CommandError [код = 59, ErrMsg = нет такой команды: 'allowDiskUse' , bad cmd: '{allowDiskUse: false, explain: false, aggregate: "city", конвейер: [{$ match: {population: {$ gte: 50000}}}], bypassDocumentValidation: false}', doc: {" ok ": 0," errmsg ":" no such command: 'allowDiskUse', bad cmd: '{allowDiskUse: false, explain: false, aggregate: \ "city \", конвейер: [{$ match: {population: { $ gte: 50000}}}], bypassDocumentValidation: false} '"," code ": 59}]), WrappedArray())))]

+0

Какая версия реагирует на использование вами? –

+1

https://github.com/ReactiveMongo/Reactivemong-Play-Json/issues/11 –

+0

@ andrey.ladniy Версия ** 0.11.10 **. Есть ли способ избежать этой ошибки? –

ответ

2

Как сказал @ andrey.ladniy, эта проблема исправлена ​​в версии 0.12.0-SNAPSHOT. Чтобы использовать эту версию, обновить файл build.sbt и добавить:

resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" 
libraryDependencies ++= Seq(
    "org.reactivemongo" %% "play2-reactivemongo" % "0.12.0-SNAPSHOT" 
) 

И очистить кэш плющ. Для этого в IntelliJ IDEA выберите «Файл» -> «Недействительный кеш/перезагрузка» и выберите «Недействить и перезагрузить».

Сначала я не очистил кеш и получил ту же ошибку, даже после обновления до новой версии.

Смежные вопросы