продолжение объяснения ассоциации на документах - PullRequest
0 голосов
/ 17 мая 2018

во время прочтения секвелирования части связи с доктором, объяснение ниже действительно смущает меня

hasOne и принадлежит для вставки ключа ассоциации в разные модели друг от друга. hasOne вставляет ключ ассоциации в целевую модель тогда как ownTo вставляет ключ ассоциации в исходную модель.

, а также

Player.belongsTo(Team); // Will add a teamId attribute to Player to hold the primary key value for Team

Похоже, что если я установлю связь между двумя моделями, sequelize автоматически добавит внешний ключ к целевой модели.

но согласно статье, https://lorenstewart.me/2016/09/12/sequelize-table-associations-joins/z

мы должны вручную добавить внешний ключ в файл модели.

какой из них прав ..?

Прошло много времени с тех пор, как я задал вопрос об этой проблеме.

Любое подробное объяснение будет очень полезно.

Буду также признателен за любые рекомендуемые статьи о связи сиквелизов, так как сиквелиз doc кажется новичкам в ORM.

1 Ответ

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

На самом деле это зависит от того, как вы создаете свои таблицы.Через sync или через migrations.

Например

const User = sequelize.define('user', {
  username: Sequelize.STRING,
});

const Address = sequelize.define('add', {
  address: Sequelize.STRING,
});

User.hasOne(Address);

sequelize.sync({ force: true })
  .then(() => User.create({
    username: 'test'
  }))
  .then(item => {
    console.log(item.dataValues.itemPrice);
  });

Это создаст поле userId в базе данных

database screenshot

Обратите внимание, что я использую sync.Однако, если вы используете миграцию, вам придется создать ее самостоятельно.

PS: лучше использовать migrations вместо sync.

...