Я пытаюсь проверить очень простую транзакцию, включающую два обновления в одной коллекции.Идея состоит в том, что мне нужно, чтобы оба запроса потерпели неудачу, если один из них потерпит неудачу.Вот мой код:
const session = await mongoose.startSession();
session.startTransaction();
try {
const opts = { session, new: true };
const A = await Author.
findOneAndUpdate({firstName: 'Red'}, {firstName: 'Gray'}, opts);
const B = await Author.
findOneAndUpdate({firstName: 'Bill'}, {firstName: 'William'}, opts);
await session.commitTransaction();
session.endSession();
} catch (err) {
await session.abortTransaction();
session.endSession();
throw err;
}
Итак, ради тестирования я пытаюсь изменить поля firstName
в двух отдельных документах в одной коллекции.Я намеренно кормлю ложное условие в первом findOneAndUpdate()
(в коллекции нет документа со значением Red
для firstName
).Второе условие положительное.Однако, пока выполняется второй запрос, первый - нет.И Мангуст не выдает ни ошибок, ни предупреждений.В такой ситуации я бы хотел, чтобы оба запроса не выполнялись, то есть транзакция должна быть прервана.Как можно это сделать?