Проверьте, существуют ли все записи в таблице - PullRequest
1 голос
/ 25 марта 2020

Добрый день,

Я использую Sequelize mysql в nodeJs.

Моя проблема в том, что, учитывая массив идентификаторов, таких как [4,5,6,7 , 8]

И таблица T, где каждая строка содержит идентификатор. скажем, таблица T:

ID

4

5

7

8

Как искать если все идентификаторы в массиве существуют в таблице?

Делать ли я для l oop и вызывать find для каждого l oop? Это делается асинхронно или синхронно? Как мне обернуть его в обещание, если я хочу это сделать?

Я не уверен, как правильно искать, если в таблице есть все идентификаторы, заданные массивом.

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2020
SELECT COUNT(DISTINCT id) = 5       -- the values amount in the array
FROM sourcetable
WHERE FIND_IN_SET(id, '4,5,6,7,8')  -- the array as CSV literal

Этот запрос вернет 1 запись с одним полем. Значение 1 означает, что все элементы массива присутствуют, 0 - что по крайней мере один элемент отсутствует.

Массив НЕ должен содержать дубликаты.

1 голос
/ 25 марта 2020

foreach l oop не будет работать, поэтому go с для l oop пример здесь следующий

  const ids =  [4,5,6,7,8];
  for (const id of ids) {
    db.T
      .findOne({
        where: { id: id }
      }).then()
  }
...