【问题标题】:How to associate two tables at Sequelize如何在 Sequelize 关联两个表
【发布时间】:2020-05-13 21:10:12
【问题描述】:

我很怀疑。有两个表称为type_agricultural_implementagricultural_implement,其中type_agricultural_implement_idagricultural_implement 内部,即type_agricultural_implement_id。这是1:N的关系。但我不知道我的代码是否正确。

模型 - type_agriculture_implement

/* jshint indent: 2 */

module.exports = function (sequelize, DataTypes) {
  const type_agricultural_implement = sequelize.define(
    'type_agricultural_implement',
    {
      id: {
        type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
        allowNull: false,
        primaryKey: true,
        autoIncrement: true,
      },
      description: {
        type: DataTypes.STRING(90),
        allowNull: false,
      },
    },
    {
      tableName: 'type_agricultural_implement',
    }
  );
  type_agricultural_implement.associate = (models) => {
    type_agricultural_implement.hasMany(models.agricultural_implement, {
      foreignKey: 'type_agricultural_machine_id',
    })
  }
};

模型 - 农业实施


/* jshint indent: 2 */

module.exports = function (sequelize, DataTypes) {
  const agricultural_implement = sequelize.define('agricultural_implement', {
    agricultural_implement_id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      references: {
        model: 'agricultural_machine',
        key: 'agricultural_machine_id'
      }
    },
    type_agricultural_machine_id: {
      type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
      allowNull: false,
      references: {
        model: 'type_agricultural_machine',
        key: 'id',
      },
    },
  }, {
    tableName: 'agricultural_implement'
  });

  agricultural_implement.associate = (models) => {
    agricultural_implement.belongsTo(models.type_agricultural_machine, { foreignKey: 'type_agricultural_machine_id' });
  };

  return agricultural_implement;
};

我的代码正确吗?

【问题讨论】:

  • 除了这个type_agricultural_machine,一切看起来都很好。不应该是type_agricultural_implement吗?
  • 这个名字implement可以是任何与农业相关的东西,比如拖拉机等等
  • 我在说这个agricultural_implement.belongsTo(models.type_agricultural_machine, { foreignKey: 'type_agricultural_machine_id' });你在这里与错误的模型进行关联。
  • 我解决了这个问题,在模型agricultural_implement 我把错误的名称与引用和关联。哈哈哈

标签: mysql node.js express sequelize.js


【解决方案1】:

我解决了这个问题,在我的 Model agricultural_implement 那里有

type_agricultural_machine_id: {
      type: DataTypes.INTEGER(5).UNSIGNED.ZEROFILL,
      allowNull: false,
      references: {
        model: 'type_agricultural_machine',
        key: 'id',
      },
    },
  }, {
    tableName: 'agricultural_implement'
  });

  agricultural_implement.associate = (models) => {
    agricultural_implement.belongsTo(models.type_agricultural_machine, { foreignKey: 'type_agricultural_machine_id' });
  };

我把错误的名字放在有type_agricultural_machine_id 的地方会是type_agricultural_implement_idreferences 和关联也是一样的。

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2016-07-23
    • 2018-10-04
    • 2019-08-18
    相关资源
    最近更新 更多