簡體   English   中英

sequelizer中的一對多關系

[英]one-to-many relationships in sequelizer

一直在尋找各種答案和git問題,但仍然無法正常工作。 我有驅動程序模型和CarDrivers模型。 一個駕駛員可以駕駛多輛汽車,所以我想建立一對多的關系。

驅動程序模型為(models / drivers.js):

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Driver = sequelize.define('Driver', {
    name: DataTypes.STRING
  }, {});
  Driver.associate = function(models) {
    // associations can be defined here

  };
  return Driver;
};

現在是CarDrivers(models / cardrivers.js):

'use strict';


module.exports = (sequelize, DataTypes) => {
  const CarDriver = sequelize.define('CarDriver', {
    status: DataTypes.INTEGER,

  }, {});
  CarDriver.associate = function(models) {

    // associations can be defined here
    CarDriver.belongsTo(models.Driver, {
      onDelete: "CASCADE",
      foreignKey: 'id',
      as: 'car_driver'
    });
  };
  return CarDriver;
};

數據遷移沒有錯誤,但是在表CarDrivers中沒有看到條目/相關列。 任何人都可以幫助解決它。

您的代碼的問題在於,關聯定義中的foreign_key不能為id ,因為它將與CarDriver表的id沖突。 如果將其更改為driver_id ,則會在car_driver表中看到該列:

const Driver = sequelize.define('driver', {
  name: { type: Sequelize.STRING }
});

const CarDriver = sequelize.define('car_driver', {
  name: { type: Sequelize.STRING }
});

CarDriver.belongsTo(Driver, {
  onDelete: 'CASCADE',
  foreignKey: 'driver_id'
});

const driver = await Driver.create({
  name: 'first driver'
})

const carDriver = await CarDriver.create({
  name: 'first carDriver',
  driver_id: driver.id
})

兩個注意事項:

  • foreignKey是可選的。 如果將其保留為空白,則Sequelize將默認為driverId ,例如driverId

  • 您的遷移文件必須說明CarDriver表上的外鍵:

     up: function(queryInterface, Sequelize) { return queryInterface.createTable('car_driver', { id: {}, driver_id: { .. } }); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM