Mongodb 玩框架-将多个列表返回到模板

Mongodb 玩框架-将多个列表返回到模板,mongodb,scala,playframework,reactivemongo,twirl,Mongodb,Scala,Playframework,Reactivemongo,Twirl,我有3个类,我想返回3个列表模板中使用的形式 我的数据库是MongoDB def addCourse = Action.async {implicit request => val teacherCollection = db.collection[BSONCollection]("Teacher") val courseColl = subjectCollection.find(BSONDocument()).cursor[Subject].collect[List]()

我有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])
我有一个错误:类型不匹配预期列表[Teacher],实际未来[List[Teacher]]

我该怎么办

注意:若我把Ok(视图…)放到ValSam映射中,编译器会显示一个错误,这听起来像是异步错误,因为“async”将是红色的

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

我已经用flatMap解决了这个问题

courseColl.flatMap { course =>
  teacherColl.flatMap { teacher =>
    semesterColl.map { semester =>
      Ok(views.html.Course.addNewCourse(course, teacher, semester,    Course.form))
    }
  }
}

你想要实现的目标并不明显
val sam
是一个
Future[List[Teacher]]
,因为它上面的
map
函数毫无意义。如果将
Ok
移动到
map
函数中,可能会有进展,但可能会出现其他编译器错误。另外,
courseColl.map
将为您提供
courses=>
,但它的命名似乎是一个项目而不是列表。另外,我只是假设您的“coll”是未来的-我不知道您使用的是什么db库,所以我不能自己复制代码。尝试进一步解释代码,人们可能会提供帮助。请检查post edit我已经用FlatMapi解决了此问题如果你已经解决了,你可以在下面发布答案并接受:)如果没有,我将在本周研究制作一个示例。