gpt4 book ai didi

node.js - sequelize 中的一对多关系

转载 作者:行者123 更新时间:2023-12-03 22:39:11 25 4
gpt4 key购买 nike

一直在查看各种答案和 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 ,因为这会与 id 表的 CarDriver 发生冲突。如果将其更改为 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
  • 您的迁移文件必须考虑 CarDriver 表上的外键:
    up: function(queryInterface, Sequelize) {
    return queryInterface.createTable('car_driver', {
    id: {},
    driver_id: {
    ..
    }
    });
    }
  • 关于node.js - sequelize 中的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777395/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com