我已将sequelizejs集成到我的快速框架中。我已经配置了所有模型,并试图用它构建我的第一个查询。
我一直收到错误“错误:模型与ModelTwo无关!”
app.get('/',function(req,res){
db.Member.findAll({include:[{model:db.MemberProfile,as:'Profile'}]})
.success(function(users){
if(users){
res.json(users);
}else{
res.send('no users');
}
});
});
// model.js
module.exports = function(sequelize,sql) {
return sequelize.define('Model', {
//attributes
});
Model.hasOne('ModelTwo',{foreignKey:'model_id'});
};
// model_two.js
module.exports = function(sequelize,sql) {
return sequelize.define('ModelTwo', {
//attributes
});
//no relationship defined. Tried ModelTwo.hasMany('Model',{foreignKey:'id'});
//but it yields the same resulting error
};
关于可能出错的任何想法?我正在使用最新版本的sequelize 1.7.0-rc6。
答案 0 :(得分:28)
这实际上是另一种情况,会抛出同样的错误,
当我在包含模型时尝试使用as
选项进行别名时,我遇到了同样的问题。只要您使用默认名称别名,这不会引发错误,但如果您尝试使用其他名称,则会收到错误。
解决方案,
它清楚地说
如果关联是别名(使用
as
选项),您必须指定 包含模型时的别名。
这意味着,反之亦然
如果要在包含时为别名设置别名,则必须为其关联设置别名(使用
as
选项)。
答案 1 :(得分:7)
我明白了。我似乎需要在模型定义中使用以下内容来添加关联,而不是文档中的简单Model.hasOne(bla)。
classMethods:{
associate:function(models){
Model.hasOne(models.ModelTwo,{foreignKey:'foreign_key'})
}
}
此代码在他们网站上的快递教程中,而不是在关联文档中。