MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose.js-Transaktionen

Wenn Sie wirklich Transaktionen über mehrere Dokumenttypen hinweg (in separaten Sammlungen) haben müssen, können Sie dies mit einer einzigen Tabelle erreichen, in der die durchzuführenden Aktionen gespeichert sind.

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

Diese Einfügung ist atomar und wird auf einmal ausgeführt. Sie können dann die Befehle in der Sammlung „Aktionen“ ausführen und sie als abgeschlossen markieren oder sie löschen, wenn Sie sie abgeschlossen haben, und Ihren ursprünglichen Rückruf aufrufen, wenn sie alle abgeschlossen sind. Dies funktioniert nur, wenn Ihre Aktionsverarbeitungsschleife das einzige ist, was die Datenbank aktualisiert. Natürlich müssen Sie aufhören, Mongoose zu verwenden, aber je eher Sie das tun, desto besser werden Sie sowieso.