【问题标题】:how change value sequelize migration?改变价值如何导致迁移?
【发布时间】:2018-11-29 01:12:56
【问题描述】:

如何在没有clean请求的情况下仅使用sequelize migration来更改列中的值? upsert 还是其他?

Sequelize CLI [节点: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

数据库图片

【问题讨论】:

  • 请解释“没有干净的请求”。而且,你应该发布代码,而不是截图

标签: sequelize.js database-migration


【解决方案1】:

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

如果有人遇到这种情况,这是我使用的代码。

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,
      {},
    );
  },
};

【讨论】:

    【解决方案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
        );
      },
    

    您必须创建一个临时模型,或者您可以只使用您的快捷方式,然后代替您存储模型的任何位置。希望这可以帮助!为我工作。

    【讨论】:

    • 请花点时间阅读 [stackoverflow.com/help/deleted-answers](help center) 中有关回答问题的网站指南。你不应该留下一个“我也是”风格的“答案”。
    • 大家好,对不起,我本来是想发表评论的,但后来我找到了“解决方案”,所以我编辑了答案。
    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2020-12-10
    • 2017-06-16
    相关资源
    最近更新 更多