-1

私には 3 つのクラスがあり、フォームで使用するテンプレートに 3 つのリストを返したいのですが、私のデータベースは MongoDB です

def addCourse = Action.async {implicit request =>
  val teacherCollection = db.collection[BSONCollection]("Teacher")
   val courseColl = subjectCollection.find(BSONDocument()).cursor[Subject].collect[List]()
   val teacherColl = teacherCollection.find(BSONDocument()).cursor[Teacher].collect[List]()

    courseColl.map { course =>
      val sam = teacherColl.map{teacher=>
        teacher
      }
    Ok(views.html.Course.addNewCourse(course,sam,Course.form))
   }
  }

テンプレートコード:

   @(subject:List[models.Subject],teacher:List[models.Teacher],myForm: Form[models.Course])

エラーが発生しました: タイプの不一致は List[Teacher] を期待しています , 実際の Future[List[Teacher]]

私は何をするつもりですか?

注:OK(views ...)をval samマップに配置すると、コンパイラはエラーを表示します。「async」が赤くなるため、非同期エラーのように聞こえます

 Error:(59, -1) Play 2 Compiler: 
 /app/controllers/School.scala:59: type mismatch;
found   : Unit
  required: play.api.mvc.Result
4

1 に答える 1

0

flatMap でこの問題を修正しました

courseColl.flatMap { course =>
  teacherColl.flatMap { teacher =>
    semesterColl.map { semester =>
      Ok(views.html.Course.addNewCourse(course, teacher, semester,    Course.form))
    }
  }
}
于 2015-02-10T12:53:07.067 に答える