使用 sequelize 复制外键列

duplicate foreign key column using sequelize

我有一个使用sequelize的node项目,有下面两个表

"use strict";

module.exports = function(sequelize, DataTypes) {
  var asset = sequelize.define("asset", {
    description   : DataTypes.STRING,
    maker         : DataTypes.STRING,
    model         : DataTypes.STRING,
    serialNumber  : DataTypes.STRING,
    barcode       : DataTypes.STRING,
    account       : DataTypes.INTEGER,
    usefulLife    : DataTypes.INTEGER,
    downtimeCosts : DataTypes.FLOAT,
    purchasePrice : DataTypes.FLOAT
  }, {
    classMethods: {
      associate: function(models) {
        /*Un estado es de muchas categorias, y no se puede borrar si tiene un activo asociado*/
        asset.belongsTo(models.assetState, {
          onDelete: "RESTRICT",
          foreignKey: {
            allowNull : false,
            name      : 'assetState_id'
          }
        });
      }

    }
  });

  return asset;
};


"use strict";

module.exports = function(sequelize, DataTypes) {
  var assetState = sequelize.define("assetState", {
    state: DataTypes.STRING
  }, {
    classMethods: {
      associate: function(models) {
        assetState.hasMany(models.asset)
      }
    }
  });

  return assetState;
};

问题是,当我检查 postgres 中的资产表时,我有两列("assetState_id"、"assetState")我想那是因为我明确给出了关系的名称,因为我可以不生成列 "assetState"?

谢谢

您可以在 assetState table 中声明一个主键,然后在关联定义中引用它:

var assetState = sequelize.define("assetState", {
  assetState_id: { 
    type: Sequelize.INTEGER, 
    primaryKey: true, 
    autoIncrement: true
  }, 
  state: DataTypes.STRING
}, {
  classMethods: {
    associate: function(models) {
      assetState.hasMany(models.asset, { foreignKey: 'assetState_id' })
    }
  }
});