Mongo DB 4.0 Transacciones con Mongoose & NodeJs, Express
Estoy desarrollando una aplicación donde estoy usando MongoDB como base de datos con Nodejs + Express en la capa de aplicación, tengo dos colecciones, a saber,
usuariosactaAquí tengo que actualizar la billetera de miles de usuarios con cierta cantidad y, si tengo éxito, crear un nuevo documento con información relacionada para cada transacción, este es mi código:
userModel.update({_id : ObjectId(userId)}, {$inc : {wallet : 500}}, function (err, creditInfo) {
if(err){
console.log(err);
}
if(creditInfo.nModified > 0) {
newTransModel = new transModel({
usersId: ObjectId(userId),
amount: winAmt,
type: 'credit',
});
newTransModel.save(function (err, doc) {
if(err){
Cb(err);
}
});
}
});
pero esta solución no esatomic
siempre existe la posibilidad de que la billetera del usuario se actualice con el monto, pero la transacción relacionada no se creó en la recopilación de transacciones que resulta en una pérdida financiera.
He escuchado eso recientementeMongoDB
ha añadidoTransactions
soporte en su4.0 version
, He leído los documentos de MongoDB pero no pude lograr que lo implementara con éxitocon mangosta en Node.js, ¿alguien puede decirme cómo se vuelve a implementar este código anterior utilizando la últimaTransactions
característica de MongoDB que tiene estas funciones
Session.startTransaction()
Session.abortTransaction()
Session.commitTransaction()
MongoDB Docs:Haga clic aqu