我正在使用带有MySQL数据库的Sequelize使用node.js做一个简单的项目。我正在为模型关联建模。一个拥有hasMany,另一个拥有hastoTo,我在两者中都设置了信息(例如as:...,foreignKey:...,onDelete:...),并在foreignKey中设置了属性allowNull。当我使用belongsTo方法保存模型时,在请求主体中传递foreignKey时,它将正确保存。但是,当我使用结合使用方法hasOne的模型来执行此操作时,它不起作用。它通过了,我需要指定使用belongsTo方法的模型ID。
const connection = require('../../config/database');
const DataTypes = require('sequelize').DataTypes;
const Course = connection.define('course', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
courseName: {
type: DataTypes.STRING(50),
field: 'course_name',
allowNull: false
}
},
{ timestamps: false });
Course.associate = models => {
Course.belongsTo(models.Lecturer, {
foreignKey: {
field: 'lecturer_id',
allowNull: false
},
as: 'lecturer'
});
Course.belongsToMany(models.Student, {
through: 'student_course',
as: 'students',
foreignKey: 'curse_id',
otherKey: 'student_id'
})
}
module.exports = Course;
const connection = require('../../config/database');
const DataTypes = require('sequelize').DataTypes;
const Lecturer = connection.define('lecturer', {
lecturerName: {
type: DataTypes.STRING(50),
field: 'lecturer_name',
allowNull: false
}
},
{ timestamps: false });
Lecturer.associate = models => {
Lecturer.hasOne(models.Course, {
foreignKey: {
field: 'lecturer_id',
allowNull: false
},
as: 'course'
})
}
module.exports = Lecturer;
结果: [ValidationErrorItem { 消息:“ course.courseId不能为空”, 类型:“ notNull Violation”, 路径:“ courseId”, 值:null, 来源:“ CORE”, 实例:[对象], validateatorKey:'is_null', validatorName:null, validateatorArgs:[]}]
答案 0 :(得分:0)
我无法发表评论,但看起来错误显示了驼峰式列名(courseId)而不是蛇形列名(course_id)。
此外,您在Course.belongsToMany
关联中拼写了“ course_id”。