当我尝试更新数据库中的某些值时,我使用 db.run
类型不匹配,预期:DBIOAction[NotInferedR, NoStream, Nothing],实际:Future[PortalPostgresProfile.ProfileAction[Int, NoStream, Effect.Write]]
def updateEmployerProductSettings(employer: Employer,
newProductSettingsInfo: ProductSettingsInfo, now: LocalDateTime):
Future[Int] = {
val query = for {
oldProductSettings <- getEmployerProductSettings(employer)
//((returns Future[ProductSettings]
} yield {
//yield flattens the Future and i get only ProductSettings
//then i filter the TableQuery[ProductSettingsTable] by id
productSettingsQuery.filter(_.employerId === employer.id)
//then map the productSetting by fields and update
.map(
productSettings =>
(productSettings.enableSC,
productSettings.enableLCon,
productSettings.enableLRe,
productSettings.enableLP,
productSettings.SC,
productSettings.enableL,
productSettings.clearedAt))
.update((
newProductSettingsInfo.enableSC,
newProductSettingsInfo.enableLCon,
newProductSettingsInfo.enableLRe,
newProductSettingsInfo.enableLP,
newProductSettingsInfo.SC,
newProductSettingsInfo.enableL,
if (!oldProductSettings.clearedCanLoadSC &&
newProductSettingsInfo.clearedCanLoadSC) Some(now)
else oldProductSettings.clearedAt
))
}
db.run(query)
}
db.run 不起作用,如何将类型更改为预期类型?
类型不匹配,预期:DBIOAction[NotInferedR, NoStream, Nothing],实际:Future[PortalPostgresProfile.ProfileAction[Int, NoStream, Effect.Write]]
尝试
db.run(DBIO.sequence(query))
或
db.run(DBIO.from(query).flatten)