Loopback 4如何重写内置User模型并添加自定义列
扩展@loopback/authentication-jwt内置User模型的实操步骤
1. 创建自定义User实体
在项目src/models目录下新建自定义模型文件,例如custom-user.model.ts,直接继承@loopback/authentication-jwt提供的内置User类,追加你需要的自定义字段:
import {model, property} from '@loopback/repository'; import {User as BaseUser} from '@loopback/authentication-jwt'; @model({ settings: { // 保持和原有User表同名,避免新建表 name: 'User' } }) export class CustomUser extends BaseUser { // 示例:新增手机号字段 @property({ type: 'string', required: false, mysql: { columnName: 'phone', dataType: 'varchar', dataLength: 11, nullable: true } }) phone?: string; // 示例:新增用户头像字段 @property({ type: 'string', nullable: true }) avatar?: string; // 按需添加其他自定义字段即可 constructor(data?: Partial<CustomUser>) { super(data); } }
2. 替换框架默认的User模型绑定
在项目入口的application.ts文件中,添加绑定替换逻辑,将框架原本绑定的内置User模型替换为你自定义的版本:
import {CustomUser} from './models/custom-user.model'; import {UserServiceBindings} from '@loopback/authentication-jwt'; // 在Application类的构造函数中添加以下代码 this.bind(UserServiceBindings.USER_MODEL).toClass(CustomUser);
3. 自定义UserRepository(可选,有自定义业务逻辑时需要)
如果需要针对新增字段编写自定义查询逻辑,可在src/repositories下新建custom-user.repository.ts,继承默认的UserRepository:
import {inject} from '@loopback/core'; import {DbDataSource} from '../datasources'; // 替换为你自己的数据源类 import {CustomUser} from '../models/custom-user.model'; import {UserRepository as BaseUserRepository} from '@loopback/authentication-jwt'; export class CustomUserRepository extends BaseUserRepository { constructor( @inject('datasources.db') dataSource: DbDataSource, ) { super(CustomUser, dataSource); } // 按需添加自定义查询方法 }
完成后同样在application.ts中替换Repository的绑定:
import {CustomUserRepository} from './repositories/custom-user.repository'; import {UserServiceBindings} from '@loopback/authentication-jwt'; this.bind(UserServiceBindings.USER_REPOSITORY).toClass(CustomUserRepository);
4. 同步数据库字段
运行项目的迁移命令生成新的迁移脚本,将新增字段同步到数据库中:
lb4 migrate
如果使用typeORM作为ORM层,对应执行typeORM的迁移生成与执行命令即可。
5. 调整注册接口入参(可选,需要在注册时传入自定义字段时需要)
如果需要在用户注册时就传入自定义字段,可扩展内置的注册请求DTO,替换默认绑定即可。
内容的提问来源于stack exchange,提问作者Patrick Dos Santos
相关产品推荐
相关产品推荐

