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