使用Sequelize添加/删除字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Sequelize添加/删除字段相关的知识,希望对你有一定的参考价值。

我正在使用Sequelize-cli并且在使用它时遇到一些麻烦。

请注意,这是我第一次使用Sequelize,可能是我丢失了一些概念,会非常感激它告诉我我错过了什么。

我做了一个这样的简单模型:

$ sequelize model:generate --name Notes --attributes text:content

我得到了这个迁移文件:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Notes', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      content: {
        type: Sequelize.TEXT
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Notes');
  }
};

但是现在我需要添加新字段“title”字符串类型,但是我找不到有关此过程的任何相关信息。

我应该只运行db:migrate:undo来删除所有表并更新迁移和模型文件并重做迁移吗?我认为这不是使用sequelize的正确方法。

我也一直在混淆“迁移”的概念,我为什么要使用它?

在运行“migrate:undo”命令之后似乎所有数据都消失了,有没有办法保存它们以便我可以在更新表模式后恢复数据?

任何建议都会非常感激!

答案

通过创建新的迁移并使用queryInterface.addColumn创建新字段解决了这个问题!

module.exports = {
  up: (queryInterface, Sequelize) => {
     return queryInterface.addColumn(
      'Notes',
      'title',
      Sequelize.STRING
    );
  },
   down: (queryInterface, Sequelize) => {
   return queryInterface.removeColumn(
     'Notes',
     'title'
   );
  }
};

以上是关于使用Sequelize添加/删除字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sequelize CLI 中添加、删除新列

Django REST框架--认证和权限

在 sequelize 返回值中删除连接表数据

删除 sequelize 迁移中的约束

如何删除使用片段管理器添加的所有片段?

Node.js Sequelize 模型,其中一个字段是一组对象