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
не задан нигде в вашем коде, поэтому он действительно не определен.