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

Gemmer til MongoDB i en sløjfe

Det er fordi save er faktisk en I/O-operation, som er Asynkron. Nu, for loop er faktisk synkroniseret. Tænk på det på denne måde:din JS-motor udfører serielt hver linje, den ser. Antag, at disse linjer holdes den ene efter den anden på en stak. Når det kommer til save , holder det det til side på en anden stak (da det er en I/O-operation og derfor ville tage tid) og fortsætter med resten af ​​løkken. Det viser sig, at motoren først ville tjekke denne nye stak, efter at den har fuldført hver linje på den ældre. Derfor er værdien af ​​variablen cats vil være det sidste element i arrayet. Det er således kun den sidste værdi, der gemmes.

For at bekæmpe denne tragedie kan du bruge flere metoder:

  1. Lukning - Læs mere
  2. Løfter - Læs mere . Der er et sødt bibliotek som lover mongo-driveren at gøre det lettere at arbejde med.
  3. Generatorer osv. - Læs mere . Ikke klar til primetime endnu.

Bemærkning om #2 - Jeg er ikke bidragyder til projektet, men samarbejder med forfatteren. Jeg har brugt biblioteket i godt et år nu, og det er hurtigt og fantastisk!



  1. Afinstaller mongoDB fra ubuntu

  2. Er det nødvendigt at åbne MongoDB-forbindelse, hver gang jeg vil arbejde med DB?

  3. HBase BlockCache 101

  4. Planlæg Node.js-job hvert femte minut