You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:45:00