[英]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.