Эффективные способы загрузки 5 элементов отношений с использованием TypeORM в вашем приложении

TypeORM — это популярная библиотека объектно-реляционного сопоставления (ORM) для Node.js и TypeScript. Он обеспечивает удобный способ взаимодействия с базами данных путем абстрагирования базовых запросов SQL. При работе с отношениями в TypeORM вы можете столкнуться со сценариями, в которых вам необходимо эффективно загрузить определенное количество связанных элементов. В этой статье мы рассмотрим несколько способов достижения этой цели, а также приведем примеры кода.

Метод 1: использование метода find() с ограничением

import { getRepository } from 'typeorm';
const loadItems = async (): Promise<Item[]> => {
  const itemRepository = getRepository(Item);
  return itemRepository.find({
    relations: ['relation1', 'relation2'],
    take: 5,
  });
};

Метод 2. Использование построителя запросов с ограничением

import { getRepository } from 'typeorm';
const loadItems = async (): Promise<Item[]> => {
  const itemRepository = getRepository(Item);
  return itemRepository
    .createQueryBuilder('item')
    .leftJoinAndSelect('item.relation1', 'relation1')
    .leftJoinAndSelect('item.relation2', 'relation2')
    .take(5)
    .getMany();
};

Метод 3. Использование необработанных SQL-запросов

import { getConnection } from 'typeorm';
const loadItems = async (): Promise<Item[]> => {
  const query = `
    SELECT * 
    FROM item
    LEFT JOIN relation1 ON item.relation1Id = relation1.id
    LEFT JOIN relation2 ON item.relation2Id = relation2.id
    LIMIT 5;
  `;
  const connection = getConnection();
  return connection.query(query);
};

Метод 4. Отложенная загрузка с нумерацией страниц

import { getRepository } from 'typeorm';
const loadItems = async (): Promise<Item[]> => {
  const itemRepository = getRepository(Item);
  const items = await itemRepository.find();
  const loadedItems = await Promise.all(
    items.slice(0, 5).map((item) => itemRepository.loadRelation(item, 'relation1'))
  );
  return loadedItems;
};

В этой статье мы рассмотрели несколько методов эффективной загрузки 5 элементов отношений с использованием TypeORM в вашем приложении. В зависимости от вашего конкретного случая использования вы можете выбрать наиболее подходящий метод. Предоставленные примеры кода демонстрируют различные подходы, такие как использование метода find()с ограничением, построитель запросов, необработанные SQL-запросы и отложенную загрузку с нумерацией страниц. Используя эти методы, вы можете оптимизировать загрузку отношений в приложении на базе TypeORM.