sequelize Model.hasOne错误:模型与ModelTwo无关

时间:2014-02-17 17:43:16

标签: 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');
  }
 });
});

// 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。

2 个答案:

答案 0 :(得分:28)

这实际上是另一种情况,会抛出同样的错误,

当我在包含模型时尝试使用as选项进行别名时,我遇到了同样的问题。只要您使用默认名称别名,这不会引发错误,但如果您尝试使用其他名称,则会收到错误。

解决方案,

它清楚地说

  

如果关联是别名(使用as选项),您必须指定   包含模型时的别名。

这意味着,反之亦然

  

如果要在包含时为别名设置别名,则必须为其关联设置别名(使用as选项)。

答案 1 :(得分:7)

我明白了。我似乎需要在模型定义中使用以下内容来添加关联,而不是文档中的简单Model.hasOne(bla)。

classMethods:{
  associate:function(models){
    Model.hasOne(models.ModelTwo,{foreignKey:'foreign_key'})
  }
}

此代码在他们网站上的快递教程中,而不是在关联文档中。