我正在尝试在删除关联的农民时删除任务。 我已经阅读了续集文档,并且在那里做了相同的解决方案。但是我无法自动删除任务。我也在以下链接中尝试了解决方案:
续集删除不起作用
续集.js删除:"级联"不是删除记录续集
我正在将 sequelizejs 与 mysql 一起使用。
我的模型:
任务.js
'use strict';
var Farmer = require('./farmer');
module.exports = function(sequelize, DataTypes) {
var Task = sequelize.define('Task', {
title: DataTypes.STRING,
deadline: DataTypes.DATE,
description: DataTypes.TEXT,
FarmerId: {
type: DataTypes.INTEGER,
references: {
// This is a reference to another model
model: Farmer,
// This is the column name of the referenced model
key: 'id'
}
}
}, {
classMethods: {
associate: function(models) {
Task.belongsTo(models.Farmer, {foreignKey: 'FarmerId'});
// associations can be defined here
}
}
});
return Task;
};
农民.js
'use strict';
var validator = require('validator');
module.exports = function(sequelize, DataTypes) {
var Farmer = sequelize.define('Farmer', {
username:{
type: DataTypes.STRING,
allowNull: false,
},
address: DataTypes.STRING,
email: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
validate: {
isEmail: { args: true, msg: "not a valid email!" },
len: { args: [0, 100], msg: "email can't be bigger than 100"},
}
},
phone:{
type: DataTypes.STRING,
allowNull: false,
},
}, {
classMethods: {
associate: function(models) {
Farmer.hasMany(models.Task, {onDelete: 'CASCADE', hooks:true});
// associations can be defined here
}
}
});
return Farmer;
};
我还能做什么?
另外,我需要在mysql相关表上设置"删除级联"吗?如果我不这样做,续集定义关联删除不起作用?
您可以在
任务定义中省略FarmerId
。续集通过将任务与农民相关联来自动知道存在FarmerId
。试试看,其他一切似乎都很正常。