【问题标题】:sequelize Model.hasOne Error: Model is not associated to ModelTwosequelize Model.hasOne 错误:模型未关联到 ModelTwo
【发布时间】:2014-03-17 03:32:06
【问题描述】:

我已将 sequelizejs 集成到我的 express 框架中。我配置了所有模型并尝试使用它构建我的第一个查询。

我不断收到错误消息“错误:模型未与 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');
  }
 });
});

// 模型.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。

【问题讨论】:

    标签: javascript sql node.js sequelize.js


    【解决方案1】:

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

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

    解决办法,

    上面写的很清楚

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

    这意味着,反之亦然

    如果您想在包含模型时给模型起别名,则它的关联必须是别名(使用as 选项)。

    【讨论】:

    • 显然我的 rtfm 不够紧密。非常感谢您的回答!
    • 很难弄清楚这一点......直到我找到你的答案。准点!
    • 这到底是什么意思
    【解决方案2】:

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

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

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

    【讨论】:

    • 这是救命稻草。
    • 这应该没有必要
    • 一年后,我同意你的看法。在我看来,这是一个巨大的缺陷,至少在文档中,如果不是在代码中。
    • 没必要,他原来的代码是在关联之前返回的。
    • 我在这里遇到了类似的问题,stackoverflow.com/questions/39519954/relations-in-sqlize,我尝试了你的解决方案,但也没有用
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    相关资源
    最近更新 更多