Реализация условия IS NULL в TypeORM: подробное руководство

Пройдите тест, узнайте какой профессии подходите
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы отобрать записи со значением NULL, используйте функцию IsNull в TypeORM:

typescript
Скопировать код
import { IsNull } from 'typeorm';

const result = await repository.find({ where: { columnName: IsNull() } });

Данный код выберет строки, в которых столбец columnName не содержит данных. Не забудьте заменить columnName на конкретное имя столбца вашей таблицы.

Пошаговый план для смены профессии

Профессиональная обработка условия NOT NULL

Если вам требуется исключить строки, где столбец имеет значение NULL, примените сочетание Not и IsNull:

typescript
Скопировать код
import { Not, IsNull } from 'typeorm';

// Мы ищем столбцы, значения которых гарантированно не NULL.
const nonNullResults = await repository.find({ where: { columnName: Not(IsNull()) } });

Теперь у вас есть записи, где столбец columnName заполнен данными!

Гибкость QueryBuilder

QueryBuilder подходит для формирования более сложных запросов. Контроль на NULL с использованием его функций очень прост:

typescript
Скопировать код
const queryBuilderResult = await repository
  .createQueryBuilder("user")
  .where("user.columnName IS NULL")  // Обозначаем именно записи со значением NULL!
  .getMany();

Для получения противоположного результата добавьте NOT:

typescript
Скопировать код
const queryBuilderNonNullResult = await repository
  .createQueryBuilder("user")
  .where("user.columnName IS NOT NULL")  // Сегодня мы исключаем NULL!
  .getMany();

Рекомендуем задействовать QueryBuilder для решения сложных задач, но не злоупотреблять его возможностями без особой надобности!

Визуализация

Приведём на примере шахматной доски:

Markdown
Скопировать код
Шахматная доска 🏁: [Ферзь, Ладья, ПУСТО, Король]

Поиск поля с критерием IS NULL выглядит так:

Markdown
Скопировать код
🏁🧩❓: ПУСТО
# На нашей доске "клетка" с NULL соответствует пустой клетке на шахматах

Сравним в табличке условия IS NULL и IS NOT NULL:

Markdown
Скопировать код
| Условие    | Результат           |
| ---------- | -------------------- |
| IS NOT NULL| Ферзь, Ладья, Король |
| IS NULL    | ПУСТО                |

Фильтруя по IS NULL или IS NOT NULL, мы определяем, занята ли клетка на шахматной доске, или она свободна.

Более глубокое погружение в условия IS NULL

Поработаем с этим. Сравнение с null в SQL может вызвать замешательство, поскольку null не поддаётся стандартной логике сравнения:

SQL
Скопировать код
SELECT * FROM users WHERE name = NULL;  // Внимание: это не даст ожидаемого результата!

Не стоит беспокоиться, функция IsNull() заметно упрощает всё. Она задаёт условие IS NULL соблюдая типизацию в TypeORM и выступая в качестве FindOperatorType:

typescript
Скопировать код
import { FindOperatorType } from 'typeorm';

// Вуаля, всё решено: "isNull" является частью FindOperatorType. Но это наше с вами секретное знание!

Благодаря этому подходу вы избежите ошибок, вызванных неверным синтаксисом SQL.

Да, бывает и такое – пустота!

Обработка null в программировании – что-то вроде попытки услышать ультразвуковой свисток. Это особенно ощущается в логических операциях.

IsNull и Not(IsNull()) в TypeORM позволяют вам аккуратно управлять нулевыми значениями в структурах данных и запросах для стабильной работы приложения и сохранения порядка в ваших данных — это выгодно для обеих сторон!

Полезные материалы

  1. TypeORM – Превосходный ORM для TypeScript и JavaScript – Нужны параметры поиска в TypeORM? Великолепное руководство для ознакомления!
  2. TypeORM – Превосходный ORM для TypeScript и JavaScript – Погрузитесь в API репозитория TypeORM и научитесь создавать запросы.
  3. TypeORM – Превосходный ORM для TypeScript и JavaScript – Подробно о работе QueryBuilder с условиями в TypeORM, включая IS NULL.
  4. Issues · typeorm/typeorm · GitHub – Присоединитесь к живым дискуссиям о возможностях IS NULL и многом другом в репозитории TypeORM на GitHub.
  5. Newest 'typeorm' Questions – Stack Overflow – Самые свежие вопросы и ответы о работе с TypeORM и формировании сложных запросов.
  6. Medium Article on TypeORM Find Options and Common Patterns – Полное руководство по параметрам поиска в TypeORM, включающее общие шаблоны.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод используется для выборки записей с NULL в TypeORM?
1 / 5