Sequelizejs: нет автоматической генерации методов из ассоциаций

Я пытаюсь настроить AM: N ассоциацию с использованием Fearsjs с Sequelize. Я следую этой "инструкции", но мне приходится приспосабливаться к обновлениям.

Мой крючок, чтобы связать уже созданного пользователя с уже созданным элементом:

module.exports = function (options = {}) { 
  return function (hook) {
    hook.app.service('users')
      .get(hook.data[0].user_id)
      .then(users => {
        hook.app.service('items')
          .find(hook.data[0].item_id)
          .then(benches => items.addMyusers(users));
      });

    return Promise.resolve(hook);
  };
};

Я получил:

error: Unhandled Rejection at: Promise  Promise {
  <rejected> TypeError: Cannot read property 'addMyusers' of undefined

Под моим определением модели пользователя я установил ассоциацию с:

  users.associate = function (models) {
    users.belongsToMany(models.items, {
      through: {
        model: 'favorites-items',
        unique: false
      },
      foreignKey: 'item_id',
      as: 'myitems',
      constraints: false
    });
  };

под определением модели изделия:

  items.associate = function (models) { 
    items.belongsToMany(models.users, {
      through: {
        model: 'favorites-items',
        unique: false
      },
      as: 'myusers',
      foreignKey: 'user_id',
      constraints: false
    });
  };

Почему addMyusers не существует? Такие методы должны автоматически генерироваться при создании ассоциации?

Как указано в следующих документах:

Это добавит методы getUsers, setUsers, addUser, addUsers в Project и getProjects, setProjects, addProject и addProjects для пользователя.

1 ответ

Решение

Это не проблема, связанная с продолжением вообще.

Внимательно посмотрите на ваше сообщение об ошибке:

Ошибка типа: невозможно прочитать свойство addMyusers из неопределенного

Дело не в том, что sequelize не добавил метод, а в том, что ваша переменная items не определено, и, конечно, undefined не имеет addMyusers метод. Из кода, который вы разместили, items не задан нигде в вашем коде, поэтому он действительно не определен.

Другие вопросы по тегам