Cuando ejecuto la ruta de send , tengo un error: MongoError: Cannot call abortTransaction twice y MongoError: Cannot call abortTransaction after calling commitTransaction .
Tengo dos colecciones car y color . Y al mismo tiempo quiero agregar a las matrices: car.colors.push(model); color.brands.push(year); y guardar en la base de datos. Pero quiero usar withTransaction y session de mongoose. No quiero la situación que debido a un error, car.colors.push(model); se guardará en la base de datos, pero color.brands.push(year); no se salvará.
module.exports.send = async (req, res) => { const sess = await mongoose.startSession(); if(role === 'car') { try { await sess.withTransaction(async () => { const car = await Cars.findOne({ _id: sender}); const color = await Colors.findOne({_id: keeper}); let model = { contentInfo : { msg : msg } }; let year = { contentInfo : { msg : msg } } car.colors.push(model); color.brands.push(year); await car.save({session: sess}); await color.save({session: sess}); await sess.commitTransaction(); sess.endSession(); return res.json(car); }); } catch (error) { await sess.abortTransaction(); sess.endSession(); throw error; } } }Intenta atrapar podría estar dentro de withTransaction