express - 如何在 Sequelize 中使用 onDelete Cascade
问题描述
我有一个消息模型,当我想删除一条消息时,我收到一个错误,因为它通过 hasMany 链接到喜欢/不喜欢,我与你分享我的模型:
型号留言:
'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Message extends Model {
static associate(models) {
models.Message.belongsTo(models.User, {
foreignKey: {
allowNull: false
}
});
models.Message.belongsTo(models.Message, {
as: 'message',
foreignKey: 'userId',
targetKey: 'id'
})
models.Message.hasMany(models.Like, {
as: 'like',
foreignKey: {
name: 'messageId',
allowNull: true
},
onDelete: 'CASCADE'
})
}
};
Message.init({
userId: DataTypes.INTEGER,
idParent: DataTypes.INTEGER,
content: DataTypes.STRING,
attachement: DataTypes.STRING,
tags: {
type: DataTypes.JSON,
allowNull: true,
defaultValue: null
}
}, {
sequelize,
modelName: 'Message',
});
return Message;
};
模型喜欢:
'use strict';
module.exports = (sequelize, DataTypes) => {
var Like = sequelize.define('Like', {
messageId: {
type: DataTypes.INTEGER,
primaryKey :true,
references: {
model: 'Message',
key: 'id'
}
},
userId: {
type: DataTypes.INTEGER,
primaryKey :true,
references: {
model: 'User',
key: 'id'
}
},
isLike: DataTypes.INTEGER
}, {});
Like.associate = function(models) {
// associations can be defined here
models.Like.belongsTo(models.User, {
foreignKey: 'userId',
as: 'user',
});
models.Like.belongsTo(models.Message, {
foreignKey: 'messageId',
as: 'message',
});
};
return Like;
};
我有几个问题:
- 我的 onDelete: 'cascade' 在正确的位置吗?
- 如何修改我的迁移文件以便考虑 onDelete?
谢谢。
解决方案
推荐阅读
- ios - 如何使用 UIDragInteraction 立即开始拖动?
- angular - 角度模态弹出窗口不起作用
- c++ - 与win 64bit有关吗?错误:STATUS_ACCESS_VIOLATION
- eclipse - 颠覆性连接器不可用
- c# - Unity覆盖`StandardAssetsScripts`的最佳方法
- linux - 通过 lldb 从 Linux(ARM32、Debian、RaspberryPi3B+)分析 .NET Core 控制台应用程序崩溃转储失败
- asp.net - 在 C# 中转换 JSON 格式
- python - 使用另一列上的键和字典中的值替换 pandas 列值
- vue.js - Vuetify 如何添加自定义主题
- java - 迭代并调用方法列表