Scala slick db.run直接返回对象
目前,我这样做:Scala slick db.run直接返回对象,scala,playframework,slick,Scala,Playframework,Slick,目前,我这样做: def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = { val action = (processStepTemplates returning processStepTemplates.map(_.id)) += ProcessStepTemp
def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = {
val action = (processStepTemplates returning processStepTemplates.map(_.id)) += ProcessStepTemplatesModel(None, step.title, step.createdat, step.updatedat, step.deadline, step.comment, step.stepType, step.deleted, Some(processId))
db.run(action).flatMap(id => {
db.run(processStepTemplates.filter(_.id === id).result.headOption)
})
}
我有两个db。运行返回创建的记录
有没有一种方法可以只用一个db.run
?你可以使用动作合成(带用于理解或带map/flatMap)。例如:
def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = {
val action = (processStepTemplates returning ...)
val composedAction = action.flatMap { id =>
processStepTemplates.filter(_.id === id).result.headOption
}
db.run(composedAction)
}
您可以使用动作组合(用于理解或使用map/flatMap)。例如:
def addProcessStepTemplateToProcessTemplate(step: ProcessStepTemplatesModel, processId: Int): Future[Option[ProcessStepTemplatesModel]] = {
val action = (processStepTemplates returning ...)
val composedAction = action.flatMap { id =>
processStepTemplates.filter(_.id === id).result.headOption
}
db.run(composedAction)
}