【发布时间】:2017-06-07 08:59:50
【问题描述】:
我收到了错误
found : scala.concurrent.Future[Option[models.ProcessTemplatesModel]]
required: Option[models.ProcessTemplatesModel]
下面是我的函数
def createCopyOfProcessTemplate(processTemplateId: Int): Future[Option[ProcessTemplatesModel]] = {
val action = processTemplates.filter(_.id === processTemplateId).result.map(_.headOption)
val result: Future[Option[ProcessTemplatesModel]] = db.run(action)
result.map { case (result) =>
result match {
case Some(r) => {
var copy = (processTemplates returning processTemplates.map(_.id)) += ProcessTemplatesModel(None, "[Copy of] " + r.title, r.version, r.createdat, r.updatedat, r.deadline, r.status, r.comment, Some(false), r.checkedat, Some(false), r.approvedat, false, r.approveprocess, r.trainingsprocess)
val composedAction = copy.flatMap { id =>
processTemplates.filter(_.id === id).result.headOption
}
db.run(composedAction)
}
}
}
}
在这种情况下我的问题是什么?
编辑:
我的控制器功能如下所示:
def createCopyOfProcessTemplate(processTemplateId: Int) = Action.async {
processTemplateDTO.createCopyOfProcessTemplate(processTemplateId).map { process =>
Ok(Json.toJson(process))
}
}
是我失败了吗?
【问题讨论】:
-
您还必须使用函数调用语法更新问题
-
在上面添加了我的控制器功能
-
case Some(r)是Option类型,但您的结果是Future[Option[ProcessTemplatesModel]],这就是错误。 -
有什么解决办法?
-
这取决于
db.run(action)的输出是什么。
标签: scala playframework slick