Я тестирую транзакции, используя mongoose, и пытаюсь выполнить очень простую задачу с помощью следующего кода:
const session = await mongoose.startSession();
session.startTransaction();
try {
const opts = { session, new: true };
const A = await Author.
create({
firstName: 'Jon',
lastName: 'Snow'}, session);
if(!A) throw new Error('Aborted A by Amit!');
const B = await Author.
findOneAndUpdate({firstName: 'Bill'}, {firstName: 'William'}, opts);
if(!B) throw new Error('Aborted B by Amit!');
await session.commitTransaction();
session.endSession();
} catch (err) {
await session.abortTransaction();
session.endSession();
throw err;
}
Все, что я пытаюсь сделать, это сначала вставить (используя метод mongoose create()
)новый документ в коллекцию, а затем отредактируйте (используя метод Mongo findOneAndUpdate()
) другой документ в той же коллекции.Отказ любого запроса должен прервать весь набор транзакций.
Это create()
, кажется, вызывает у меня проблемы.Документ действительно создается и вставляется, однако он также выдает ошибку:
«Ошибка проверки автора: требуется lastName: путь lastName
., FirstName: путь firstName
требуется».
Есть идеи, что это может значить?Кажется, он жалуется на то, что ему не были даны значения для полей required
(firstName
и lastName
), несмотря на то, что я уже дал эти значения.