javascript - Sequelize:声明了外键,但没有出现在表中
问题描述
我是新手,Sequelize
为此我严格遵循此处的文档。上面写着我们必须使用hasOne()
, hasMany()
,belongsTo()
才能自动添加外键。在我的情况下:我有一个类别和一个常见问题解答模型,定义如下:
类别.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;
常见问题解答.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;
迁移运行没有任何错误,但我没有看到表中添加的列。这是什么原因?
解决方案
推荐阅读
- reactjs - 动态附加组件
- python - 如何自定义列表的排序?
- flutter - Flutter 功能发现——BottomNavigationBarItems 的 DescribedFeatureOverlay
- r - 如何在 R 中复制具有特定扩展名或包含特定短语/模式的文件?
- python - 在数据库 SQLite3 中插入字典
- bash - 如何使用 sed 或 awk 在某些字符前后添加空格?
- javascript - JQuery - 在图像上绘制矩形
- gremlin - 有条件的 has()
- ruby - 如何分解创建子字符串方法
- typescript - TypeScript 说类型是“任何”,当它被显式设置为其他东西时