Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize js,迁移中如何更改列类型_Javascript_Node.js_Sequelize.js_Feathers Sequelize - Fatal编程技术网

Javascript Sequelize js,迁移中如何更改列类型

Javascript Sequelize js,迁移中如何更改列类型,javascript,node.js,sequelize.js,feathers-sequelize,Javascript,Node.js,Sequelize.js,Feathers Sequelize,如何在迁移中更改列类型。在我的迁移1中,有一个迁移添加了列。现在,我想将列类型从字符串更改为文本,我应该创建一个类似于changeColumn的新迁移文件,还是可以创建与迁移1相同的新迁移文件,但我只需要将类型更改为文本?多谢各位 #迁移1 await queryInterface.addColumn(SampleModel.tableName, 'name', { type: Sequelize.STRING, allowNull: true, }, { transaction,

如何在迁移中更改列类型。在我的迁移1中,有一个迁移添加了列。现在,我想将列类型从字符串更改为文本,我应该创建一个类似于changeColumn的新迁移文件,还是可以创建与迁移1相同的新迁移文件,但我只需要将类型更改为文本?多谢各位

#迁移1

await queryInterface.addColumn(SampleModel.tableName, 'name', {
  type: Sequelize.STRING,
  allowNull: true,
}, {
  transaction,
});
迁移2(创建新迁移会像这样工作吗?仍然是addColumn,但我将类型更改为text)
您可以在迁移2中使用
changeColumn
而不是
addColumn

声明来自:

可以更改默认值、允许为null或数据类型


您可以使用
changeColumn
而不是
addColumn
,因为
addColumn
将在表中添加新列。 您可以这样定义迁移:

迁移文件


如果这不符合你的要求,请也投票!!啊,所以迁移的下一步是type:Sequelize.STRING,如果要撤消迁移,它会将您的类型设置为较旧的类型,即
STRING
。如果列已经存在,我还需要调用if(!Object.keys(tableDef).includes('name'){?
  await queryInterface.addColumn(SampleModel.tableName, 'name', {
      type: Sequelize.TEXT,
      allowNull: true,
    }, {
      transaction,
    });
module.exports = {
    up: (queryInterface, Sequelize) => {
        return Promise.all([
            queryInterface.changeColumn('your table name ', 'name', {
                type: Sequelize.TEXT,
                allowNull: true,
            }, {
                transaction,
            })
        ])
    },

    down: (queryInterface, Sequelize) => {
        return Promise.all([
            queryInterface.changeColumn('your table name ', 'name', {
                type: Sequelize.STRING,
                allowNull: true,
            }, {
                transaction,
            })
        ])
    }
};