squelize:动态增加列数
动态增加列数
由于列名不能采用变量,所有想要使用循环或数组创建指定数量的列数,不太可能。
但init(或define)是以 object 的格式增加列,所以可以 声明一个 object 类型的参数,通过循环动态改变 列数,就可以实现 sequelize动态初始化(或增加)表的列数。
代码示例
module.exports = (sequelize, DataTypes) => {
const data = sequelize.import('./data');
const User = sequelize.import('./user');
const index = ['index1','index2','index3'];
const obj = {};
for(key in index){
obj[index[key]] = {type: DataTypes.INTEGER, allowNull:true, comment: '指标'};
}
class ceping extends Model {
}
// 模型定义
ceping.init(obj, {
sequelize: sequelize,
tableName: 'ceping',
underscored: true,
paranoid: true,
});
//关联定义
ceping.belongsTo(data, { // 测评属于数据
constraints: false,
foreignKey: 'dataId'
})
ceping.belongsTo(User, { // 测评属于
constraints: false,
foreignKey: 'userId',
})
return ceping;
};