Как создать новую запись и ассоциацию в одной строке в Sequelize.js

#javascript #node.js #sequelize.js

#javascript #node.js #sequelize.js

Вопрос:

У меня есть две модели в ассоциации: Tournament у меня их много Players . Я пытаюсь добиться этого:

 const tournament = await db.Tournament.create(data);
const player  = await db.Player.create(data2);
await tournament.setPlayer(player);
  

Но я пытаюсь добиться этого за меньшее количество строк. Что я имею в виду под этим: я хочу создать турнир, а затем каким-то образом, например addPlayer(data2) , добавить новую строку, поэтому мне не нужно сначала сохранять игрока, а ЗАТЕМ создавать ассоциацию.

Возможно ли это? Или мне просто нужно упорствовать Tournament , затем упорствовать Player , а затем склеивать их? Что делать, если столбец игрока tournament_id не может быть нулевым? Тогда код сверху тоже не будет работать…

Есть предложения?

Комментарии:

1. Если игрок напрямую связан с турниром, почему вы не можете предварительно заполнить значение идентификатора связи при создании?

2. «Я пытаюсь достичь этого за меньшее количество строк» — это плохая цель — не идите этим путем…

3. Почему? Меньше кода = меньше запросов

Ответ №1:

Более старый вопрос, но я думаю, что это тот ответ, который вы ищете: создание с помощью ассоциаций

 return Product.create({
  title: 'Chair',
  user: {
    firstName: 'Mick',
    lastName: 'Broadstone',
    addresses: [{
      type: 'home',
      line1: '100 Main St.',
      city: 'Austin',
      state: 'TX',
      zip: '78704'
    }]
  }
}, {
  include: [{
    association: Product.User,
    include: [ User.Addresses ]
  }]
});
  

Обратите внимание на использование опции include в Product.create вызове. Это необходимо для Sequelize, чтобы понять, что вы пытаетесь создать вместе с ассоциацией.