Как использовать Sequelize belongsToMany ассоциации?
у меня есть проекты и пользователей.
пользователь может иметь много проектов.
проект может иметь несколько пользователей.
Я попытался смоделировать это с помощью ассоциации belongsToMany.
на моем сервере я определил такие ассоциации:
user.belongsToMany(project, {
through: 'writer_of_project'
foreign-key: 'user'
as: projects
});
project.bbelongsToMany(user, {
through: 'writer_of_project'
foreign-key: 'project'
as: 'writers'
});
на моем клиенте это выглядит так:
user: {
id: 1,
...
projects: [1,2,3]
}
project: {
id: 1,
...
writers: [1,4,5]
}
на сервере ассоциации требуется третья таблица для хранения ассоциации и Sequelize, похоже, не позволяет мне включить соответствующие модели из него.
если я запускаю project.find(1)
С include:[user]
Я
пользователь не связан с проектом!
если я попытаюсь поместить проект из приведенного выше примера в метод update. Атрибут users просто игнорируется (я ожидал, что проект.setUsers (projectUpdate.пользователи происходят в фоновом режиме).
каков правильный способ борьбы с загрузкой и обновлением этих ассоциации?
1 ответов
когда вы указываете псевдоним (as
) ассоциации, вы должны обеспечить, чтобы включить, а также:
project.belongsToMany(user, {
through: 'writer_of_project'
foreign-key: 'project'
as: 'writers'
});
project.find({
where: { id: 1 },
include: [ { model: User, as: 'writers' } ]
});
или вы можете сохранить ассоциацию:
Project.writersAssociation = project.belongsToMany(user, {
through: 'writer_of_project'
foreign-key: 'project'
as: 'writers'
});
project.find({
where: { id: 1 },
include: [ project.writersAssociation ]
});