Освоение встроенных объектов в TypeORM: подробное руководство

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

  1. Что такое встроенные сущности?
    Встроенные сущности в TypeORM — это объекты, которые хранятся как часть другой сущности, а не в отдельной таблице. Это позволяет вам организовывать связанные данные в одной таблице, уменьшая сложность схемы базы данных.

  2. Объявление встроенных объектов.
    Чтобы объявить встроенный объект в TypeORM, вы можете использовать декоратор @Embedded(). Давайте рассмотрим пример, где у нас есть сущность Userсо встроенной сущностью Address:

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: number;
  @Column()
  name: string;
  @Embedded(() => Address)
  address: Address;
}
@Embeddable()
class Address {
  @Column()
  street: string;
  @Column()
  city: string;
  @Column()
  country: string;
}
  1. Сохранение встроенных объектов.
    При сохранении объекта со встроенными объектами TypeORM автоматически обеспечивает сохранение встроенных объектов. Вы можете просто назначить внедренный объект сущности соответствующему свойству родительской сущности и сохранить его.
const user = new User();
user.name = "John Doe";
user.address = new Address();
user.address.street = "123 Main Street";
user.address.city = "New York";
user.address.country = "USA";
await connection.manager.save(user);
  1. Запрос встроенных объектов.
    TypeORM предоставляет различные методы запроса встроенных объектов. Например, вы можете использовать QueryBuilderдля создания сложных запросов, включающих встроенные объекты.
const users = await connection
  .createQueryBuilder(User, "user")
  .where("user.address.city = :city", { city: "New York" })
  .getMany();
  1. Обновление встроенных объектов.
    Чтобы обновить встроенный объект, вы можете изменить свойства объекта встроенного объекта и сохранить родительский объект.
const user = await connection.manager.findOne(User, { id: 1 });
user.address.city = "Los Angeles";
await connection.manager.save(user);
  1. Удаление встроенных объектов.
    Чтобы удалить встроенный объект, вы можете назначить nullсоответствующему свойству родительского объекта и сохранить его.
const user = await connection.manager.findOne(User, { id: 1 });
user.address = null;
await connection.manager.save(user);

В этой статье мы исследовали возможности встроенных сущностей в TypeORM. Мы научились объявлять, сохранять, запрашивать, обновлять и удалять встроенные объекты, предоставляя вам инструменты для создания более структурированных и эффективных моделей данных. Используя возможности встроенных объектов TypeORM, вы можете вывести разработку базы данных на новый уровень, создавая надежные и масштабируемые приложения.

Не забудьте поэкспериментировать со встроенными объектами в TypeORM и раскрыть весь потенциал ваших приложений, управляемых базой данных!