扩展模型
Sequelize 模型是ES6类. 你可以轻松添加自定义实例或类级别的方法.
class User extends Model {
// 添加一个类级别的方法
static classLevelMethod() {
return 'foo';
}
// 添加实例级别方法
instanceLevelMethod() {
return 'bar';
}
}
User.init({ firstname: Sequelize.STRING }, { sequelize });
当然,你还可以访问实例的数据并生成虚拟的getter:
class User extends Model {
getFullname() {
return [this.firstname, this.lastname].join(' ');
}
}
User.init({ firstname: Sequelize.STRING, lastname: Sequelize.STRING }, { sequelize });
// 示例:
User.build({ firstname: 'foo', lastname: 'bar' }).getFullname() // 'foo bar'
索引
Sequelize支持在 Model.sync()
或 sequelize.sync
中创建的模型定义中添加索引.
class User extends Model {}
User.init({}, {
indexes: [
// 在 email 上创建一个唯一索引
{
unique: true,
fields: ['email']
},
// 在使用 jsonb_path_ops 的 operator 数据上创建一个 gin 索引
{
fields: ['data'],
using: 'gin',
operator: 'jsonb_path_ops'
},
// 默认的索引名将是 [table]_[fields]
// 创建多列局部索引
{
name: 'public_by_author',
fields: ['author', 'status'],
where: {
status: 'public'
}
},
// 具有有序字段的BTREE索引
{
name: 'title_index',
using: 'BTREE',
fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
}
],
sequelize
});