有没有一种方法可以使用一个基类,它具有我的模型的所有公共属性和方法,但不与数据库表链接,然后我可以在定义新模型时扩展这个基类。
在这里,我在 node express 中创建了基本的人员模型。我需要从基类扩展 person 类。
const person = sequelizeClient.define('person', {
name: {
type: DataTypes.STRING,
allowNull: false
}
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
const base = sequelizeClient.define('base', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
createdBy: {
type: Sequelize.INTEGER,
},
updatedBy: {
type: Sequelize.INTEGER,
},
deletedBy: {
type: Sequelize.INTEGER,
}
}, {
hooks: {
beforeCount(options) {
options.raw = true;
}
}
});
在文档中指出
Sequelize 模型是 ES6 类。您可以非常轻松地添加自定义实例或类级别的方法。
我如何使用 ES6 扩展类模式来做到这一点?
有一个类似的问题,但最近没有更新。 如何扩展 Sequelize 模型
原文由 v1shva 发布,翻译遵循 CC BY-SA 4.0 许可协议
Sequelize 文档中的声明对开发人员来说有点混乱。这并不意味着您可以使用 ES6 类语法扩展定义的模型,如下所示。
但是您可以通过访问原型来定义实例方法,如下所示。
你在 Sequelize 文档中提到的声明实际上是说你可以使用 基于原型的 扩展来增强模型行为,所以你不能做你在问题中尝试做的模型继承之类的事情。
像 这样 Sequelize中关于ES6类语法实现方案的讨论很多,但看起来还在讨论中。