|
|
|
|
@ -0,0 +1,57 @@
|
|
|
|
|
const { DataTypes } = require('sequelize');
|
|
|
|
|
// 导入数据库连接实例
|
|
|
|
|
const { sequelize } = require('../config/db');
|
|
|
|
|
|
|
|
|
|
// 定义 User 模型(仅映射已手动创建的 users 表,不自动建表)
|
|
|
|
|
const User = sequelize.define('User', {
|
|
|
|
|
// 字段1:id(对应表中 id 字段,主键自增)
|
|
|
|
|
id: {
|
|
|
|
|
type: DataTypes.INTEGER,
|
|
|
|
|
primaryKey: true,
|
|
|
|
|
autoIncrement: true,
|
|
|
|
|
comment: '用户ID'
|
|
|
|
|
},
|
|
|
|
|
// 字段2:username(对应表中 username 字段,非空唯一)
|
|
|
|
|
username: {
|
|
|
|
|
type: DataTypes.STRING(50),
|
|
|
|
|
allowNull: false,
|
|
|
|
|
unique: true,
|
|
|
|
|
comment: '用户名(登录用)'
|
|
|
|
|
},
|
|
|
|
|
// 字段3:password(对应表中 password 字段,非空)
|
|
|
|
|
password: {
|
|
|
|
|
type: DataTypes.STRING(100),
|
|
|
|
|
allowNull: false,
|
|
|
|
|
comment: '用户密码'
|
|
|
|
|
},
|
|
|
|
|
// 字段4:email(对应表中 email 字段,可选唯一)
|
|
|
|
|
email: {
|
|
|
|
|
type: DataTypes.STRING(100),
|
|
|
|
|
unique: true,
|
|
|
|
|
allowNull: true,
|
|
|
|
|
comment: '用户邮箱'
|
|
|
|
|
},
|
|
|
|
|
// 字段5-6:createdAt/updatedAt(对应表中这两个字段,自动维护,无需手动赋值)
|
|
|
|
|
createdAt: {
|
|
|
|
|
type: DataTypes.DATE,
|
|
|
|
|
allowNull: false,
|
|
|
|
|
comment: '创建时间'
|
|
|
|
|
},
|
|
|
|
|
updatedAt: {
|
|
|
|
|
type: DataTypes.DATE,
|
|
|
|
|
allowNull: false,
|
|
|
|
|
comment: '更新时间'
|
|
|
|
|
}
|
|
|
|
|
}, {
|
|
|
|
|
// 模型配置:关键是关闭自动建表相关逻辑,仅做表映射
|
|
|
|
|
tableName: 'users', // 明确指定映射的表名(必须和手动创建的表名一致)
|
|
|
|
|
timestamps: true, // 开启自动维护 createdAt/updatedAt(表中已手动创建这两个字段)
|
|
|
|
|
paranoid: false, // 关闭软删除(和表结构匹配)
|
|
|
|
|
charset: 'utf8mb4',
|
|
|
|
|
collate: 'utf8mb4_unicode_ci',
|
|
|
|
|
freezeTableName: true, // 冻结表名,避免 Sequelize 自动给表名加复数(这里表名已手动设为 users,无需处理)
|
|
|
|
|
syncOnAssociation: false // 关闭关联自动同步(避免模型操作影响表结构)
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 导出模型,供控制器调用(后续登录接口查数据用)
|
|
|
|
|
module.exports = User;
|