Sequelize выполняет дополнительный запрос SELECT перед обновлением ассоциаций - PullRequest
0 голосов
/ 04 мая 2020

Sequelize, кажется, вводит ненужные запросы при добавлении новой связанной записи к исходной записи.

Например, рассмотрим обычную ассоциацию «многие ко многим» с моделью «Пользователи» и моделью «Группы», где пользователь belongsToMany группы, а каждая группа belongsToMany пользователей.

Если я создаю новую запись пользователя, а затем добавляю к этому пользователю две существующие группы, Sequelize выполняет то, что кажется лишним, ненужным

SELECT` запрос:

const record = await Users.create({id: 1, name: 'John'})
await record.addGroups([2,3]);

Вышеупомянутый вызов record.addGroups([2,3]) приводит к этим двум MySQL запросам:

SELECT group_id
     , user_id
     , 
  FROM user_groups
 WHERE user_groups.user_id = 1
   AND user_groups.group_id IN ('2', '3');

INSERT INTO user_groups (group_id,user_id) VALUES 
('2','1'),('3','1');

1) Какова причина первого SELECT запроса выше?

2) Есть ли какие-либо преимущества, включая этот запрос?

3) Есть ли способы отключить этот дополнительный запрос SELECT?

...