2016-03-28 3 views
2

Я сделал некоторую ассоциацию, но это не сработало, возможно, со мной, что что-то не так, обратитесь за помощью. Имеются две моделиSequelizejs не связан с

module.exports = function (sequelize, DataTypes) { 
var pages_lang = require('./pages_lang')(sequelize, DataTypes); 
return sequelize.define('pages', { 
    id: { 
     type: DataTypes.INTEGER(10), 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true, 
     references : { model: "pages_lang", key: "page_id" } 
    }, 
    name: { 
     type: DataTypes.STRING, 
     allowNull: false 
    }, 
    published: { 
     type: DataTypes.BOOLEAN, 
     allowNull: false, 
     defaultValue: '0' 
    }, 
    createdAt: { 
     type: DataTypes.DATE, 
     allowNull: false, 
     defaultValue: '0000-00-00 00:00:00' 
    }, 
    updatedAt: { 
     type: DataTypes.DATE, 
     allowNull: false, 
     defaultValue: '0000-00-00 00:00:00' 
    } 
}, { 
    classMethods: { 
     associate: function (models) { 
      this.hasMany(models.pages_lang, {onDelete: 'SET NULL', onUpdate: 'CASCADE', foreignKey: 'page_id', as: 'pages', through: models.pages_lang}); 
     }, 
     getAll() { 
      return this.findAll({include: [{model: pages_lang, as: 'pages_lang'}]}).then(function (result) { 
       return result; 
      }); 
     } 
    } 
}); 

};

module.exports = function (sequelize, DataTypes) { 
return sequelize.define('pages_lang', { 
    id: { 
     type: DataTypes.INTEGER(10), 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    page_id: { 
     type: DataTypes.INTEGER(10), 
     allowNull: false, 
     references : { model: "pages", key: "id" } 
    }, 
    content: { 
     type: DataTypes.TEXT, 
     allowNull: false 
    } 
}, { 
    classMethods: { 
     associate: function (models) { 
      this.belongsTo(models.pages, {foreignKey: 'id', foreignKeyConstraint:true, as: 'pages', through: models.pages}); 
     } 
    } 
}); 

};

Но при вызове приводит к ошибке

Unhandled rejection Error: pages_lang (pages_lang) is not associated to pages!

Advance очень благодарен за помощь

+0

Добро пожаловать на SO. Стандарт заключается в отправке кода на ваши вопросы, чтобы вопросы не подвергались риску потери информации для будущих читателей, если эти внешние ссылки будут удалены в будущем. 4 пробела форматируют строку как код. – Tim

ответ

1

Ваше объединение псевдоним (as) должен соответствовать тому, что вы передаете findAll

this.hasMany(models.pages_lang, {onDelete: 'SET NULL', onUpdate: 'CASCADE', foreignKey: 'page_id', as: 'pages_lang' }); 

return this.findAll({include: [{model: pages_lang, as: 'pages_lang'}]}); 

С модель уже называется pages_lang, вы также можете полностью пропустить псевдоним:

this.hasMany(models.pages_lang, {onDelete: 'SET NULL', onUpdate: 'CASCADE', foreignKey: 'page_id'}); 

return this.findAll({include: [pages_lang]}); 

Обратите внимание, что я удалил through аргумент - он должен использоваться только для belongsToMany (многие-ко-многим)

Смежные вопросы