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;
};
posted @ 2022-08-27 21:05  小超不挑食  阅读(95)  评论(0编辑  收藏  举报