sql >> Base de Datos >  >> NoSQL >> MongoDB

Transacciones Mongoose.js

Si realmente debe tener transacciones en varios tipos de documentos (en colecciones separadas), el medio para lograrlo es con una sola tabla que almacena las acciones a realizar.

db.actions.insert(
{ actions: [{collection: 'players', _id: 'p1', update: {$set : {name : 'bob'} } },
            {collection: 'stories', _id: 's1', update: {$set : {location: 'library'} } }], completed: false }, callback);

Este inserto es atómico, y todo hecho a la vez. Luego puede ejecutar los comandos en la colección de 'acciones' y marcarlos como completos o eliminarlos a medida que los completa, llamando a su devolución de llamada original cuando todos estén completos. Esto solo funciona si su bucle de procesamiento de acciones es lo único que actualiza la base de datos. Por supuesto, tendrás que dejar de usar mangosta, pero cuanto antes lo hagas, serás mejor de todos modos.