【问题标题】:Strongloop - add fields to returned user modelStrongloop - 向返回的用户模型添加字段
【发布时间】:2026-02-01 09:55:01
【问题描述】:

UserRoles 字段可以扩展strongloop 的/User/login 响应的任何方式吗?

默认情况下 strongloop 返回带有“firstName、lastName、email、id 和 userName”的用户对象,我还需要 userRoles。

【问题讨论】:

    标签: node.js loopbackjs strongloop


    【解决方案1】:

    您可以为内置登录方法创建remote hook

    user.js

    module.exports = User => {
      User.afterRemote('login', async (ctx, usr, next) => {
        let roleMaps = await User.app.models.RoleMapping.find({ where: { principalId: usr.userId } })
        let roleIds = roleMaps.map(roleMap => { return roleMap.roleId })
        let roles = await User.app.models.Role.find({ where: { id: { inq: roleIds } } })
        usr.roles = roles
        next()
      })
    }
    

    注意:我使用的是 ES6 和部分 ES7(异步/等待),但您可以轻松地将其重写为 ES5。

    另一种选择是在您的用户和角色模型之间创建关系,然后使用include filterscopes

    【讨论】:

    • 不要忘记,您可能不想自定义 User,而是您自己的模型扩展 User。
    最近更新 更多