Необработанный отказ SequelizeEagerLoadingError: modalB не связан с modelA - PullRequest
0 голосов
/ 29 мая 2018

Я использую sails.js с sequelize.js ORM.Вот как я определяю свои модели для работы с ассоциациями: https://github.com/KSDaemon/sails-hook-sequelize

модель Пользователь:

module.exports = {
  attributes: {
    user_id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    username: Sequelize.STRING,
    password: Sequelize.STRING,
    createdAt: Sequelize.DATE,
  },
  associations: function () {
    Response.hasMany(Post, { as: 'posts', foreignKey: 'user_id' });
    Response.hasMany(Response, { as: 'responses', foreignKey: 'user_id' });
  },
  defaultScope: function () {
    return {
      include: [
        { model: Post, as: 'posts' },
        { model: Response, as: 'responses' },
      ]
    };
  },
  options: {
    freezeTableName : false,
    tableName       : 'users',
    schema          : 'codigomx',
    classMethods    : {},
    instanceMethods : {},
    hooks           : {}
  }
};

и моя модель Ответ:

module.exports = {

  attributes: {
    response_id: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    response_content: Sequelize.TEXT,
    createdAt: Sequelize.DATE
  },
  associations: function () {
    Response.belongsTo(User, { foreignKey: 'user_id', targetKey: 'user_id'});
    Response.belongsTo(Post, { foreignKey: 'post_id', targetKey: 'post_id'});
  },
  options: {
    freezeTableName : false,
    tableName       : 'responses',
    schema          : 'codigomx',
    classMethods    : {},
    instanceMethods : {},
    hooks           : {}
  }

};

, но когдаЯ пытаюсь запустить это:

User.findOrCreate({where: {username: 'user'}, defaults: {password: 'psw'}});

Это дает мне эту ошибку: Необработанный отказ SequelizeEagerLoadingError: Ответ не связан с пользователем!

, и у меня действительно есть ассоциации, может кто-то сказать мнеесли в моих ассоциациях что-то не так?

вот мой репо: https://github.com/AlfredoDaAs/codigomx

1 Ответ

0 голосов
/ 29 мая 2018

Я думаю, что в пользовательской модели есть опечатка.

Вместо Response.hasMany(Post, { as: 'posts', foreignKey: 'user_id' }); должно быть User.hasMany(Post, { as: 'posts', foreignKey: 'user_id' });

...