📅  最后修改于: 2023-12-03 15:20:06.124000             🧑  作者: Mango
在 Sequelize 中,每个表都必须有一个主键。默认情况下,主键是 id
字段,且是自增的。但是,有时候我们需要使用自己定义的主键,例如 GUID 或者自己生成的数字。
本文将介绍如何在 Sequelize 中自定义主键。
要自定义主键,需要在模型定义中指定 primaryKey
属性。例如,下面是一个使用 UUID 作为主键的模型定义:
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'postgres'
});
class User extends Model {}
User.init({
id: {
type: DataTypes.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
}
}, {
sequelize,
modelName: 'user'
});
在上面的代码中,我们使用 defaultValue
属性指定了默认值,primaryKey
属性指定了该字段为主键。
有时候,我们需要使用多个字段作为主键。在 Sequelize 中,我们可以通过在模型定义中指定一个数组来实现这个目的。例如,下面是一个使用 username
和 email
作为主键的模型定义:
class User extends Model {}
User.init({
username: {
type: DataTypes.STRING,
primaryKey: true
},
email: {
type: DataTypes.STRING,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
}
}, {
sequelize,
modelName: 'user'
});
在上面的代码中,我们将 username
和 email
字段都指定为主键。
在使用自定义主键时,有一些注意事项需要注意:
autoIncrement
属性指定是否自增。unique
属性指定是否唯一。在 Sequelize 中,使用自定义主键可以更好地满足我们的需求。通过定制化主键的形式,我们可以更好地保证数据库的数据完整性和正确性,提高应用的性能和稳定性。