アプリに非常に単純な Mongo モデルを組み込もうとしていますが、最初の試みは無駄でした。私は a で立ち往生してNullPointerException
おり、呼び出しを aTry
でラップしようとしましたが、最終的には a になりましたSuccess(scala.concurrent.impl.Promise$DefaultPromise@1f02f0b3)
これがコードです
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]
Postman を使用してみましたが、最終的にこのリファレンスになりましたが、それほど役に立ちませんでした:
app/controllers/Application.scala:27