开发者问题收集

Sequelize 播种机找不到模型的正确列名

2019-07-06
388

我有一个模型“Currency”,它是一张只有一列(名称)的表,位于使用 sequelize 作为 ORM 的 nodeJS 项目中。我为其创建了一个种子,但当我运行种子时,它找不到正确的列名称。该模型是:

./app/models/Currency.js

'use strict';
module.exports = (sequelize, DataTypes) => {
    const Currency = sequelize.define('Currency', {
      name: { 
        type: DataTypes.STRING,
        allowNull: false,
        primaryKey: true
      }
    },
    {
      freezeTableName: true,
      tableName: 'currency',
      timestamps: false,
      id: false
    }
    );
    Currency.removeAttribute('id')
    return Currency
  }

种子文件, ./database/seeders/20190705045938-SeedCurrency.js

'use strict';

module.exports = {
  up: function(queryInterface) {
    return queryInterface.bulkUpdate('currency', [
        { name: 'USD' },
        { name: 'BRL' },
        { name: 'EUR' },
        { name: 'BTC' }
    ], {});
  },

  down: function(queryInterface) {
     return queryInterface.bulkDelete('currency', null, {});
  }
};

当我运行 node_modules/.bin/sequelize db:seed:all 时,它失败并显示错误:

== 20190705045938-SeedCurrency: migrating =======

ERROR: column "0" of relation "currency" does not exist

配置此关系时我遗漏了什么?提前致谢。

1个回答

使用 queryInterface.bulkInsert 而不是 bulkUpdate

Anna Tolochko
2019-07-11