Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与模型Sequelize不关联的模型_Javascript_Mysql_Node.js_Sequelize.js_Model Associations - Fatal编程技术网

Javascript 与模型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] }) 如何解决此问题并获取

我正在尝试使用Sequelize来建立表之间的一对多关系:
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"
    }
});