我有一些非常常见的领域。 (CreatedBy, CreatedDate, LastUpdatedBy, LastUpdatedDate)
。
当我创建模型时,有什么方法可以在我的模型中继承这些属性?
我查看了 sequelize docs 。但在那里找不到任何相关的东西。
目前,我正在创建的每个模型中指定这些属性:
const Sequelize = require('sequelize');
const conn = require('../common/mssql-connection');
const Member = conn.define('Member', {
id: {
type: Sequelize.INTEGER,
field: "Id",
autoIncrement: true,
primaryKey: true
},
name: {
type: Sequelize.STRING,
field: "Name"
},//Everything below this line is repetitive in other models. Inheritance would be useful here.
createdDate: {
type: Sequelize.DATE,
field: "CreatedDate"
},
createdBy: {
type: Sequelize.STRING,
field: "CreatedBy"
},
lastUpdatedDate: {
type: Sequelize.DATE,
field: "LastUpdatedDate"
},
lastUpdatedBy: {
type: Sequelize.STRING,
field: "LastUpdatedBy"
}
})
module.exports = Member;
最佳答案
我也没有设法找到“标准”方式,但是您可以拦截 Sequelize 构造函数的原始定义函数,处理您的默认字段:
const originalDefine = Sequelize.prototype.define;
Sequelize.prototype.define = function(tableName,fields){
return originalDefine.call(this,tableName, {
createdBy: { type: Sequelize.DataTypes.STRING,defaultValue:"default 'createdBy' value!!!!" },
...fields
})
}
然后创建您的 Sequelize 实例..
const sequelize = new Sequelize(...)
关于node.js - Sequelize 模型中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60863888/