我遇到一个问题,其中包含在我的查询中并不起作用,我无法弄清楚原因。我有两个模型:问题和建议。
var Suggestion = sequelize.define('Suggestion', {
text: DataTypes.STRING
}, {
classMethods: {
associate: function (models) {
// associations can be defined here
Suggestion.belongsTo(models.Question, {
foreignKey: 'questionId',
as: 'question'
})
Suggestion.belongsTo(models.User)
Suggestion.hasMany(models.Vote)
}
}
})
建议:
Question.findAll({
include: [{
model: models.Suggestion
}]
})
我的尝试查询在这里:
SequelizeEagerLoadingError: Suggestion is not associated to Question!
但我一直收到错误:function validateForm(){
let firstliGroup = document.getElementsByName("yesnocheck");
for(i=0; i<firstliGroup.length; i++){
//console.log(firstliGroup[i].checked);
if(firstliGroup[i].checked == true){
console.log('success');
return true;
}
else {
console.log('failed');
return false;
}
}
}
他们为什么没有关联?它们在我的数据库中(基于我写的迁移)。如果我目前正在做错,我应该如何设置我的关联?我已经用这个问题看过其他人,但却无法弄清楚为什么我的关联错了。
答案 0 :(得分:0)
Sequelize不再支持classMethods。 classMethods和instanceMethods被删除。
一个:
const Model = sequelize.define('Model', {
...
}, {
classMethods: {
associate: function (model) {...}
},
instanceMethods: {
someMethod: function () { ...}
}
});
新:
const Model = sequelize.define('Model', {
...
});
//类方法
Model.associate = function (models) {
...associate the models`enter code here`
};
参考:http://docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html#breaking-changes
答案 1 :(得分:0)
由于语法错误,我遇到了此错误。我正在使用
include: {
model: db.modelOne,
model: db.modelTwo
}
,不带方括号[]。包括它解决了错误。 无论如何,mentioned docs提供了更简洁的选择,以递归方式包括所有外部模型:
User.findAll({ include: [{ all: true, nested: true }]});
答案 2 :(得分:0)
请检查您的 init-models.js
,代码如下:
question.hasMany(suggestion, { as: 'suggestion', foreignKey: 'questionId'});
suggestion.belongsTo(question, { as: 'question', foreignKey: 'questionId'});
存在吗?
来自
"sequelize": "^6.6.2"