유의사항
import { startSession } from 'mongoose';
const session = await startSession();
try {
session.startTransaction();
// 저장 예시
await Customer.create({ firstName: req.body.firstName });
await Customer.create({ firstName: req.body.firstName2 });
await session.commitTransaction();
session.endSession();
} catch (e) {
await session.abortTransaction();
session.endSession();
}
작업 순서
같은 세션에서 진행을 해야, 트랜잭션이 가능하기 때문에 Multi-Document 처리를 진행 할 경우 아래 방식 중 하나를 사용
- 트랜잭션 내 DB 작업을 같은 세션을 통해 진행하도록 추가 작업 필요
import { ClientSession } from 'mongoose';
const session: ClientSession = await startSession();
await Customer.create({ firstName: req.body.firstName }).session(session);
import { ClientSession } from 'mongoose';
const session: ClientSession = await startSession();
const newCustomer = new Customer({ firstName: req.body.firstName });
await newCustomer.save({ session });