Подтвердить что ты не робот

Sequelize Model.hasOne Ошибка: модель не связана с ModelTwo

Я включил 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.

4b9b3361

Ответ 1

Это действительно другой случай, который вызывает ту же ошибку,

Я столкнулся с той же проблемой, когда я пытаюсь использовать опцию as для псевдонимов при включении модели. Это не будет вызывать ошибку, если вы псевдонимеруете имя по умолчанию, но вы получите ошибку, если попробуете другое имя.

Решение,

В нем четко сказано

Если ассоциация сглажена (используя параметр as), вы должны указать этот псевдоним при включении модели.

Это означает, что, наоборот,

Если вы хотите использовать псевдоним модели при включении, это объединение должно быть псевдонимом (с использованием опции as).

Ответ 2

Я понял это. Кажется, мне нужно использовать следующее в определении модели для добавления ассоциаций вместо простой Model.hasOne(bla), которая находится в документации.

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

Этот код был в учебнике для выражения на своем сайте, а не в документации по ассоциации.