MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment lire/écrire un document en exécution parallèle avec mongoDB/mongoose

oui, il faut mieux verrouiller le houseModel, pour indiquer qu'un addItem est en cours.

Le problème est que plusieurs requêtes peuvent appeler findById et voir le même house.items.length, puis chacune détermine en fonction de cet instantané (obsolète) qu'il est correct d'ajouter un élément supplémentaire. La limite d'atomicité du nœud est le rappel ; entre un appel asynchrone et son rappel, d'autres requêtes peuvent s'exécuter.

Une solution simple consiste à suivre non seulement le nombre d'articles dans la maison, mais également le nombre d'articles supplémentaires prévus. Lors de l'entrée dans addItem, augmentez le nombre de "vouloir en ajouter plus" et testez-le.