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

So lesen/schreiben Sie ein Dokument in paralleler Ausführung mit mongoDB/mongoose

Ja, Sie müssen das houseModel besser sperren, um anzuzeigen, dass ein addItemis in Bearbeitung ist.

Das Problem ist, dass mehrere Anfragen findById aufrufen und samehouse.items.length sehen können, und dann jede auf der Grundlage dieses (veralteten) Snapshots bestimmt, dass es in Ordnung ist, ein weiteres Element hinzuzufügen. Die Atomaritätsgrenze des Knotens ist der Rückruf; zwischen einem asynchronen Aufruf und seinem Rückruf können andere Anfragen ausgeführt werden.

Eine einfache Lösung besteht darin, nicht nur die Anzahl der Artikel im Haus zu verfolgen, sondern auch die Anzahl der beabsichtigten zusätzlichen Artikel. Erhöhen Sie beim Eintritt in addItem den Zählwert für „will mehr hinzufügen“ und testen Sie das.