我有以下代码:
所以我想,我需要将
我只想获取用户并填写所有权限。包括用户个人权限和角色继承的权限。
是先获取用户,再根据用户ID执行另一个请求来获取权限更好吗?我不这么认为。
Some(db.run(unionPermissionQuery.result).map(_.map(_.name).toList))
我遇到了以下错误:
[error] found : scala.concurrent.Future[List[String]]
[error] required: List[String]
[error] Some(db.run(unionPermissionQuery.result).map(_.map(_.name).toList)),
[error] ^
[error] one error found
所以我想,我需要将
Future[List[String]]
转换为List[String]
。我是scala的新手,请原谅如果这太简单了。
完整代码:
def find(loginInfo: LoginInfo): Future[Option[models.admin.User]] = {
val userQuery = for {
dbLoginInfo <- loginInfoQuery(loginInfo)
dbUserLoginInfo <- Userlogininfo.filter(_.logininfoid === dbLoginInfo.id)
dbUser <- User.filter(_.userid === dbUserLoginInfo.userid)
} yield dbUser
db.run(userQuery.result.headOption).map { dbUserOption =>
dbUserOption.map { user =>
val permissionQuery = for {
dbUserPermission <- Userpermission.filter(_.userid === user.userid)
dbPermission <- Permission.filter(_.id === dbUserPermission.permissionid)
} yield dbPermission
val rolePermissionQuery = for {
dbUserRole <- Userrole.filter(_.userid === user.userid)
dbRole <- Role.filter(_.id === dbUserRole.roleid)
dbRolePermission <- Rolepermission.filter(_.roleid === dbRole.id)
dbPermission <- Permission.filter(_.id === dbRolePermission.permissionid)
} yield dbPermission
val unionPermissionQuery = permissionQuery union rolePermissionQuery
models.admin.User(
UUID.fromString(user.userid),
user.firstname,
user.lastname,
user.jobtitle,
loginInfo,
user.email,
user.emailconfirmed,
Some(db.run(unionPermissionQuery.result).map(_.map(_.name).toList)),
user.enabled)
}
}
我只想获取用户并填写所有权限。包括用户个人权限和角色继承的权限。
是先获取用户,再根据用户ID执行另一个请求来获取权限更好吗?我不这么认为。
Await
,因此我认为,您应该调整周围的代码以使用Future
。 - Odomontois