0

以下を使用して、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)

私の問題の解決策はありますか?

4

2 に答える 2