Я использую typeorm с базой данных postgresql.
Для конкретного маршрута требуются транзакции в высоконагруженном веб-приложении:
import { Router, Request, Response } from 'express';
import { getManager } from 'typeorm';
const router = Router();
router.post('/apply', async (request: Request, response: Response) => {
await getManager().transaction('SERIALIZABLE', async (txManager) => {
/* Много select и insert здесь */
});
});
Но если есть два одновременных запроса, один запрос будет иметь ошибку: "could not serialize access due to read/write dependencies among transactions."
Как этого избежать? Может быть, обрабатывать каждый запрос один за другим? Но я не знаю, как это сделать. Возможно, есть еще какие-то способы совершения транзакций, но я прочитал документацию и ничего не нашел для этого.