Sequelize:声明了外键,但没有出现在 table

Sequelize: Foreign key declared, but does not appear in the table

我是 Sequelize 的新手,为此我严格遵守文档 here。上面写着我们必须使用hasOne()hasMany()belongsTo()才能自动添加外键。在我的情况下:我有一个 Category 和一个 FAQ 模型,定义如下:

Category.js

const { Sequelize } = require('sequelize');
const sequelize = require('../database/connection');

const Category = sequelize.define('Category', {
    id: {
        type: Sequelize.DataTypes.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true
    },
    categoryShop_id: {
        type: Sequelize.DataTypes.UUID,
        allowNull: true
    },
    name: {
        type: Sequelize.DataTypes.STRING,
        allowNull: false
    },
    active: {
        type: Sequelize.DataTypes.BOOLEAN,
        allowNull: false,
        defaultValue: true
    },
    parent_id: {
        type: Sequelize.DataTypes.INTEGER,
        allowNull: true
    }
});

Category.associate = (models) => {
    Category.hasMany(models.faqs, {
        onDelete:'CASCADE',
        onUpdate:'CASCADE'
    });
};

module.exports = Category;

Faq.js

const { Sequelize } = require('sequelize');
const sequelize = require('../database/connection');

const Faq = sequelize.define('Faq', {
    id: {
        type: Sequelize.DataTypes.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true
    },
    question: {
        type: Sequelize.DataTypes.TEXT,
        allowNull: false
    },
    answer: {
        type: Sequelize.DataTypes.TEXT,
        allowNull: false
    },
    product_id: {
        type: Sequelize.DataTypes.STRING,
        allowNull: true
    },
    active: {
        type: Sequelize.DataTypes.BOOLEAN,
        allowNull: false,
        defaultValue: true
    }
});

Faq.associate = (models) => {
    Faq.belongsTo(models.categories, {
        foreignKey: {
            name: 'category_id',
            allowNull: true
        }
    });
};

module.exports = Faq;

迁移 运行 没有任何错误,但我没有看到添加到 table 的列。这是什么原因?

您混淆的模型和迁移代码。您的迁移没问题,但是您的关联缺少正确的外键列。

您的关联代码看起来不错,但它属于您的模型。

查看 https://sequelizeui.app/ 示例代码。