代码之家  ›  专栏  ›  技术社区  ›  starsneverfall

迁移后如何向架构添加新属性?

  •  2
  • starsneverfall  · 技术社区  · 7 年前

    目前我正在处理一个节点。我在构建模式时发现了一个问题,通常,我使用 http://docs.sequelizejs.com/manual/tutorial/migrations.html 要定义我的模式 $ node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string ,并在 $ node_modules/.bin/sequelize db:migrate ,我可以将这些属性写入数据库。然而,我想知道在迁移之后如何向模式添加新属性,我搜索并找到了这个 https://github.com/sequelize/cli/issues/133 正在讨论此问题,但在我尝试解决方案并运行 $node\u模块/。bin/sequelize数据库:迁移 同样,它没有将新属性写入原始模式,我不知道问题出在哪里,下面是我的代码,我正在尝试添加两个属性“address”(地址)(&)高度进入用户模式,你们能给我一些建议吗?非常感谢。

    'use strict';
    module.exports = {
      up: (queryInterface, Sequelize) => {
        let migration = [];
        migrations.push(queryInterface.addColumn(
                'address',
                'height',
                {
                    type: Sequelize.STRING,
                  }
            ));
    
        return Promise.all(migrations);
        return queryInterface.createTable('Users', {
          id: {
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER,
          },
          firstName: {
            type: Sequelize.STRING,
          },
          lastName: {
            type: Sequelize.STRING,
          },
          email: {
            type: Sequelize.STRING,
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE,
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE,
          },
        });
      },
    
      down: (queryInterface, Sequelize) => {
        return queryInterface.dropTable('Users');
      }
    };
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   starsneverfall    7 年前

    此问题已解决,您可以使用以下链接 How to Add, Delete new Columns in Sequelize CLI 为了解决这个问题,您还可以检查sequelize的查询部分以查看文档 http://docs.sequelizejs.com/class/lib/query-interface.js~QueryInterface.html ,真正的答案应该是

    module.exports = {
      up: function (queryInterface, Sequelize) {
        return [
          queryInterface.addColumn(
            'users',
            'height',
            {
              type: Sequelize.STRING,
            }
          ),
          queryInterface.addColumn(
            'users',
            'address',
            {
              type: Sequelize.STRING,
            }
          )
        ];
      },
    
      down: function (queryInterface, Sequelize) {
        return [
          queryInterface.removeColumn('users', 'height'),
          queryInterface.removeColumn('users', 'address')
        ];
      }
    };
    

    然后你可以输入

    sequelize migration:create --name add-height-and-address-to-user
    sequelize db:migrate
    

    将新属性移植到模型中。