以下を使用して、mongoddb にデータを挿入するためのポスト リクエストを作成しようとしています: 1. sbt 0.13.6 2. play 2.10 3. scala 2.11.2
json でデータを投稿し、モデルのケース クラスを作成し、JSPath を使用して json をエンティティ クラスに変換します。
これは私のサンプルコードです:
def inserTransaction = Action(parser.json) { implicit request =>
val json = request.body
val data = json.as[Transaction]
Logger.info(data.toString)
val future = collection.insert(data.copy(id = Option[BSONObjectID](BSONObjectID.generate)))
var result = ""
future.onComplete {
case Failure(t) => result = "An error has occured: " + t.getMessage
case Success(post) => result = "success"
}
Ok(result)
}
コントローラーで非同期を処理するために Action.sync を使用するサンプル コードを見てきましたが、Action.sync を使用しようとすると、Intellij IDE が「Action.sync を署名として解決できません」というエラーを検出し、変更しようとしました。このような関数の結果
future.onComplete {
case Failure(t) => Ok("An error has occured: " + t.getMessage)
case Success(post) => Ok("success")
}
そこで、 Action(parser.json) を使用することにしましたが、アクティベーターのプレイから発生した問題は、コードで「インポート play.api.libs.concurrent.Execution.Implicits._」を使用する必要があることです。しかし、ライブラリをインポートすると、新しいエラーが発生しました:
! Internal server error, for (POST) [/insertdata] ->
java.lang.ExceptionInInitializerError: null ....
Caused by: play.api.PlayException: ReactiveMongoPlugin Error[The ReactiveMongoPlugin has not been
initialized! Please edit your conf/play.plugins file and add the following line....
リクエストをリロードしようとすると、別のエラーが表示されました:
! Internal server error, for (POST) [/api/insertdata] ->
java.lang.NoClassDefFoundError: Could not initialize class controllers.TransactionController$
[error] application - Error while rendering default error page
scala.MatchError: java.lang.NoClassDefFoundError: Could not initialize class
controllers.TransactionController$ (of class java.lang.NoClassDefFoundError)
私の問題の解決策はありますか?