变更值如何促使迁移?

时间:2018-06-20 01:58:20

标签: sequelize.js database-migration

如何仅使用顺序迁移而不更改请求来更改列中的值? upsert或其他?

Sequelize CLI [Node:8.11.3,CLI:4.0.0,ORM:5.0.0-beta.5]

已加载的配置文件“ config / database.json”。    使用环境“开发”。    == 2018061713010-changeColumn:正在迁移=======

错误:无法读取未定义的属性'uniqueKeys'

这是什么错误?

'use strict';

 module.exports = {
   up: (queryInterface, Sequelize) => {
    queryInterface.upsert(
      'table',
      {
        style: 2,
      },
      {
        style: 2,
      },
      {}, //model
      {} // options
    );
  },

  down: (queryInterface, Sequelize) => {

  },
};

enter image description here

数据库图片

2 个答案:

答案 0 :(得分:2)

似乎我想出了一个解决方案:

'use strict';
 const sequelize = require('..yourpath').sequelize; 
 module.exports = {
   up: (queryInterface, Sequelize) => {
    queryInterface.upsert(
      'table',
      {
        style: 2,
      },
      {
        style: 2,
      },
      sequelize.define('your Model', {
      id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true,
      allowNull: false
    }, 
      {} // options
    );
  },

您必须创建一个临时模型,也可以只使用快捷方式,然后在任何地方存储模型。希望这可以帮助!为我工作。

答案 1 :(得分:0)

我也在努力解决同样的问题。 这与您使用的方法相同。

万一有人碰到这个,这是我使用的代码。

const tableName = 'some_config_table';

module.exports = {
  up: (queryInterface, Sequelize) => {
    const { sequelize } = queryInterface;

    const model = sequelize.define(tableName, {
      key: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true,
      },
      value: Sequelize.STRING,
      createdAt: Sequelize.DATE,
      updatedAt: Sequelize.DATE,
    });

    return queryInterface.upsert(
      tableName,
      {
        key: 'my_config_key',
        value: 1,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        value: 1,
      },
      {
        key: 'my_config_key',
      },
      model,
      {},
    );
  },

  down: (queryInterface, Sequelize) => {
    const { sequelize } = queryInterface;

    const model = sequelize.define(tableName, {
      key: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true,
      },
      value: Sequelize.STRING,
      createdAt: Sequelize.DATE,
      updatedAt: Sequelize.DATE,
    });

    return queryInterface.upsert(
      tableName,
      {
        key: 'my_config_key',
        value: 10,
        createdAt: new Date(),
        updatedAt: new Date(),
      },
      {
        value: 10,
      },
      {
        key: 'my_config_key',
      },
      model,
      {},
    );
  },
};