扫码一下
查看教程更方便
虽然 sequelize 自认为可以开箱即用, 但是如果你要处理遗留表并向前验证应用程序,仅需要通过定义(否则生成)表和字段名称即可。
class user extends model {}
user.init({
// ...
}, {
modelname: 'user',
tablename: 'users',
sequelize,
});
class mymodel extends model {}
mymodel.init({
userid: {
type: datatypes.integer,
field: 'user_id'
}
}, { sequelize });
默认情况下,sequelize 会假设你的表具有 id 主键属性。
定义自己的主键:
class collection extends model {}
collection.init({
uid: {
type: datatypes.integer,
primarykey: true,
autoincrement: true // 自动转换为 postgresql 的 serial
}
}, { sequelize });
class collection extends model {}
collection.init({
uuid: {
type: datatypes.uuid,
primarykey: true
}
}, { sequelize });
如果你的模型根本没有主键,则可以使用 model.removeattribute('id');
// 1:1
organization.belongsto(user, { foreignkey: 'owner_id' });
user.hasone(organization, { foreignkey: 'owner_id' });
// 1:m
project.hasmany(task, { foreignkey: 'tasks_pk' });
task.belongsto(project, { foreignkey: 'tasks_pk' });
// n:m
user.belongstomany(role, { through: 'user_has_roles', foreignkey: 'user_role_user_id' });
role.belongstomany(user, { through: 'user_has_roles', foreignkey: 'roles_identifier' });