Javascript 与模型Sequelize不关联的模型
我正在尝试使用Sequelize来建立表之间的一对多关系:Javascript 与模型Sequelize不关联的模型,javascript,mysql,node.js,sequelize.js,model-associations,Javascript,Mysql,Node.js,Sequelize.js,Model Associations,我正在尝试使用Sequelize来建立表之间的一对多关系:Exam和Exam\u Questions 即使表已正确创建,并且我可以在PhpMyAdmin中看到它们,但在console中仍会出现以下错误: 错误:考试问题未与考试关联 exam.js 考试题.js 为了解决错误,我尝试了: ExamQuestion.belongsTo(Exam); 但这并没有改变任何事情 查询是: Exam.findAll({ include: [ExamQuestion] }) 如何解决此问题并获取
Exam
和Exam\u Questions
即使表已正确创建,并且我可以在PhpMyAdmin中看到它们,但在console中仍会出现以下错误:
错误:考试问题未与考试关联代码>
exam.js
考试题.js
为了解决错误,我尝试了:
ExamQuestion.belongsTo(Exam);
但这并没有改变任何事情
查询是:
Exam.findAll({
include: [ExamQuestion]
})
如何解决此问题并获取考试对象,包括他们的问题?TL;博士
由于一些非常不直观的原因,这似乎是因为as
属性而发生的。要解决此问题,只需删除as
属性:
Exam.hasMany(ExamQuestion);
确定方法
默认情况下,删除as
属性后,Sequelize将自动添加以下方法:getExam_questions
,addExam_questions
等等
它们看起来很糟糕:骆驼和蛇的案例混杂在一起
为了解决这个问题,我们可以在ExamQuestion
模型选项(第三个参数)中轻松定义单数
和复数
名称:
这将指示Sequelize创建方法,例如getQuestions
和addQuestion
,而不是getExam_questions
和addExam_question
Exam.findAll({
include: [ExamQuestion]
})
Exam.hasMany(ExamQuestion);
const ExamQuestion = Sequelize.db.define("exam_question", {
correct_answer: {
type: Sequelize.STRING
},
text: {
type: Sequelize.STRING
}
}, {
name: {
singular: "question",
plural: "questions"
}
});