Освоение декремента данных с помощью TypeORM: повышение навыков серверной разработки

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

  1. Использование метода decrement.
    Один простой способ уменьшить числовое значение в вашей базе данных — использовать метод decrement, предоставляемый TypeORM. Этот метод позволяет уменьшить значение определенного столбца на указанную сумму.

Вот пример использования построителя запросов TypeORM:

import { getConnection } from 'typeorm';
// Decrement a specific column by a specified amount
const postId = 1;
const decrementAmount = 1;
await getConnection()
  .createQueryBuilder()
  .update(Post)
  .set({ views: () => `views - ${decrementAmount}` })
  .where('id = :id', { id: postId })
  .execute();

В этом примере мы уменьшаем столбец viewsобъекта Postна указанное значение decrementAmount.

  1. Уменьшение с помощью экземпляров сущностей:
    TypeORM позволяет напрямую манипулировать экземплярами сущностей и сохранять изменения в базе данных. Чтобы уменьшить значение с помощью этого подхода, вы можете получить экземпляр объекта, уменьшить нужное свойство, а затем сохранить его обратно в базу данных.
import { getConnection } from 'typeorm';
// Retrieve the entity instance
const post = await getConnection().getRepository(Post).findOne(postId);
// Decrement the desired property
post.views -= decrementAmount;
// Save the changes back to the database
await getConnection().getRepository(Post).save(post);

В этом примере мы извлекаем экземпляр сущности Post, уменьшаем свойство viewsна указанное значение decrementAmount, а затем сохраняем изменения обратно. в базу данных.

  1. Атомарное уменьшение с помощью транзакций:
    TypeORM также поддерживает атомарные декременты с использованием транзакций базы данных. Это гарантирует, что операция уменьшения выполняется надежно, даже при наличии параллельных операций.
import { getConnection } from 'typeorm';
// Start a transaction
const connection = getConnection();
const queryRunner = connection.createQueryRunner();
await queryRunner.startTransaction();
try {
  // Retrieve the entity instance
  const post = await queryRunner.manager.findOne(Post, postId);
  // Decrement the desired property
  post.views -= decrementAmount;
  // Save the changes back to the database
  await queryRunner.manager.save(post);
  // Commit the transaction
  await queryRunner.commitTransaction();
} catch (err) {
  // Rollback the transaction if an error occurs
  await queryRunner.rollbackTransaction();
} finally {
  // Release the query runner
  await queryRunner.release();
}

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

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

Не забудьте адаптировать примеры кода к вашему конкретному варианту использования и удачи в написании кода!