В документации Sequelize ORM http://docs.sequelizejs.com/ я не вижу никаких ссылок на двунаправленные ассоциации между моделями, как мы знаем из Java Hibernate или PHP Doctrine.
Итак, Sequelize не поддерживает двунаправленные ассоциации из коробки?
Двунаправленные ассоциации могут быть созданы как один к одному, так и один ко многим. В случае один-к-одному, если у пользователя есть задача, мы можем сделать user.getTask()также как task.getUser(). Его там нет.
Хорошо, sequelize не делает этого по умолчанию, вы должны указать на моделях User.hasMany(Task), а затем Task.belongsTo(User). Я рекомендую использовать псевдоним :as на hasMany, а затем после создания базы данных вы используете belongsTo с псевдонимом также и для другой модели. Я знаю, это звучит очень смешно, но это лучший способ сделать это, поскольку я работал с сиквелизами.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это зависит от того, что вы подразумеваете под "из коробки".
Двунаправленные ассоциации в Sequelize достигаются путем определения двух отдельных ассоциаций для каждой соответствующей модели. Насколько я знаю, другого пути нет.
например. У нас есть модель пользователя и модель публикации. Модель Post содержит внешний ключ от пользователя с именем UserId, это ассоциация "один ко многим". Чтобы добиться этого двунаправленно, вы должны добавить ассоциацию к модели пользователя, а также к модели публикации, как показано ниже.
User.associate = function(models) {
models.User.hasMany(models.Post, {
foreignKey:"UserId"
})
}
Post.associate = function(models) {
models.Post.belongsTo(models.User, {
foreignKey:"UserId"
})
}
Подобные подходы подходят для любого типа ассоциации. Я знаю, это кажется не самым удобным.
Это работает, когда я также добавляю belongsTo к hasMany. Так что можно. Я не уверен в синтаксисе foreignKey; это дает мне ошибку.
Какую версию сиквелиза вы используете?
также проверьте этот ссылка на целевых ключах ..
Версия 4.39.1. Это заканчивается ошибкой SQL. (MySQL). Я ожидал чего-то вроде инверсии, backref в одной из моделей.
Я использую 4.38.0, но на диалекте Postgres. Вероятно, это была моя вина, что я написал это, возможно, MySQL не поддерживает целевые ключи. тем не менее, это не имеет большого значения, поскольку ваши идентификаторы внешних ключей устанавливаются по соглашению, что, скорее всего, вам вообще не нужно в целевых ключах. :)
Вместо hasMany я пытаюсь сделать hasOne, но это, похоже, не работает.
Вы имеете в виду ассоциации M: N? [Вот] объяснение. Или вы имеете в виду, когда вы устанавливаете
hasManyв модели Origin, но также и для доступа из модели Destination? (docs.sequelizejs.com/manual/tutorial/…)