0

Я пытаюсь включить очень простую модель Mongo для своего приложения, но мои первоначальные попытки были бесполезны. Я застрять с NullPointerException и я даже попробовал оборачивать мой звонок с Try и в конечном итоге с Success([email protected])ReactiveMongo + Play Generic NullPointerException

Вот код

def token = Action.async(parse.json) { request => 
    request.body.validate[Auth].map { creds => 
     UserService.login(creds.username, creds.password).map { 
     case Some(context) => 
      val accessToken = TokenResponse(Crypto.generateToken) 
      val model = Json.toJson(context) 
      val res = Try(collection.insert(model).map(_ => Ok(Json.toJson(accessToken)))) 
      println(res.toString) 
      res.get 
     case _ => Future(BadRequest) 
     }.flatMap(identity) 
    } recoverTotal (request => Future(Unauthorized)) 
    } 

Вот ошибку (не замечают никаких ссылок на мое заявление в стек вызовов):

play.api.Application$$anon$1: Execution exception[[NullPointerException: null]] 
    at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.6.jar:2.3.6] 
    at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.6.jar:2.3.6] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.6.jar:2.3.6] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.6.jar:2.3.6] 
    at scala.Option.map(Option.scala:145) [scala-library-2.11.2.jar:na] 
Caused by: java.lang.NullPointerException: null 
    at reactivemongo.bson.buffer.WritableBuffer$class.writeString(buffer.scala:71) ~[reactivemongo-bson_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] 
    at reactivemongo.core.netty.ChannelBufferWritableBuffer.writeString(netty.scala:61) ~[reactivemongo_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONStringBufferHandler$.write(bufferhandlers.scala:83) ~[reactivemongo-bson_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] 
    at reactivemongo.bson.buffer.DefaultBufferHandler$BSONStringBufferHandler$.write(bufferhandlers.scala:82) ~[reactivemongo-bson_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] 
    at reactivemongo.bson.buffer.DefaultBufferHandler$.serialize(bufferhandlers.scala:227) ~[reactivemongo-bson_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] 

Я попытался с помощью почтальона и в конечном итоге с этой ссылкой, но не намного полезнее:

app/controllers/Application.scala:27 

enter image description here

ответ

1

Кончилось тем, что просто ... мой в результате JSON имел нулевые значения и ReactiveMongo не так. Я буду подавать ошибку, чтобы изящно терпеть неудачу или, по крайней мере, быть более описательным.

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