ВерсияColumn в TypeORM относится к функции, которая позволяет автоматически отслеживать и управлять версией объекта в базе данных. Он используется для управления оптимистичным параллелизмом, где могут возникнуть конфликты, если несколько пользователей попытаются одновременно изменить один и тот же объект.
Вот несколько методов, связанных с функцией «versionColumn» в TypeORM:
- Декоратор @Version: TypeORM предоставляет встроенный декоратор под названием
@Version, который вы можете использовать, чтобы пометить определенный столбец в вашей сущности как столбец версии. Этот декоратор гарантирует, что столбец версии автоматически увеличивается при каждом обновлении объекта.
Пример:
import { Entity, Column, Version } from 'typeorm';
@Entity()
export class User {
@Column()
name: string;
@Version()
version: number;
}
- Оптимистическая блокировка: TypeORM поддерживает оптимистическую блокировку через столбец версии. Когда вы обновляете объект, TypeORM проверяет, соответствует ли версия в базе данных предоставленной вами версии. Если они не совпадают, это означает, что объект был изменен другим процессом, и TypeORM выдает ошибку параллелизма.
Пример:
import { getManager } from 'typeorm';
const entityManager = getManager();
const user = await entityManager.findOne(User, 1);
user.name = 'New Name';
try {
await entityManager.save(user);
} catch (error) {
// Handle concurrency error
}
Используя декоратор @Versionи выполняя оптимистическую блокировку, вы можете обеспечить согласованность данных и справиться с конфликтами параллелизма в вашем приложении.