sql >> Databasteknik >  >> NoSQL >> MongoDB

Spara till MongoDB i en slinga

Det beror på att save är faktiskt en I/O-operation som är Async. Nu, for loop är faktiskt sync.Tänk på det så här:din JS-motor kör seriellt varje rad den ser. Antag att dessa rader hålls en efter en på en stack. När det gäller save , den håller den åt sidan på en annan stack (eftersom det är en I/O-operation och därför skulle ta tid) och går vidare med resten av slingan. Det visar sig så att motorn bara skulle kontrollera denna nya stack efter att den har slutfört varje rad på den äldre. Därför är värdet på variabeln cats kommer att vara det sista objektet i arrayen. Därmed sparas endast det sista värdet.

För att bekämpa denna tragedi kan du använda flera metoder:

  1. Stängningar - Läs mer
  2. Löfter - Läs mer . Det finns ett sweet bibliotek som lovar mongoföraren att göra det lättare att arbeta med.
  3. Generatorer, etc. - Läs mer . Inte redo för sändningstid än.

Anmärkning om #2 - Jag är inte en bidragsgivare till projektet, men samarbeta med författaren. Jag har använt biblioteket i över ett år nu, och det är snabbt och fantastiskt!



  1. Mongoose-fråga där värdet inte är null

  2. Hur kan jag skapa ett index med pymongo

  3. Redis SYNC och EXEC

  4. Varför rekommenderas KEYS att inte användas i Redis?