#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, чтобы понять, что вы пытаетесь создать вместе с ассоциацией.