Eri*_*ell 19 javascript sql node.js sequelize.js
我已将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');
}
});
});
Run Code Online (Sandbox Code Playgroud)
// model.js
module.exports = function(sequelize,sql) {
return sequelize.define('Model', {
//attributes
});
Model.hasOne('ModelTwo',{foreignKey:'model_id'});
};
Run Code Online (Sandbox Code Playgroud)
//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
};
Run Code Online (Sandbox Code Playgroud)
关于可能出错的任何想法?我正在使用最新版本的sequelize 1.7.0-rc6.
cod*_*aff 28
这实际上是另一种抛出相同错误的情况,
当我尝试as在包含模型时使用别名选项时,我遇到了同样的问题.只要您使用默认名称别名,这不会引发错误,但如果您尝试使用其他名称,则会收到错误.
解决方案,
它明确地说
如果关联是别名(使用该
as选项),则必须 在包含模型时指定此别名.
这意味着,反之亦然
如果要在包含时为别名设置别名,则必须为其关联设置别名(使用该
as选项).
我想到了.似乎我需要在模型定义中使用以下内容来添加关联,而不是文档中的简单Model.hasOne(bla).
classMethods:{
associate:function(models){
Model.hasOne(models.ModelTwo,{foreignKey:'foreign_key'})
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在他们网站上的快递教程中,而不是在关联文档中.