MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Transazioni di Mongoose.js

Se devi davvero avere transazioni su più tipi di documenti (in raccolte separate), il mezzo per ottenere ciò è con un'unica tabella che memorizza le azioni da intraprendere.

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

Questo inserto è atomico e tutto è fatto in una volta. È quindi possibile eseguire i comandi nella raccolta "azioni" e contrassegnarli come completi o eliminarli man mano che li completi, richiamando la richiamata originale quando sono stati tutti completati. Funziona solo se il ciclo di elaborazione delle tue azioni è l'unica cosa che aggiorna il db. Ovviamente dovrai smettere di usare la mangusta, ma prima lo farai, meglio starai comunque.