MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Запазване в MongoDB в цикъл

Това е така, защото save всъщност е I/O операция, която е Async. Сега, for цикъл всъщност е синхронизиране. Мислете за това по следния начин:вашият JS двигател последователно изпълнява всеки ред, който вижда. Да приемем, че тези редове се съхраняват един след друг в стек. Когато става въпрос за save , той го държи настрана на различен стек (тъй като това е I/O операция и следователно ще отнеме време) и продължава с останалата част от цикъла. Оказва се, че двигателят ще провери този нов стек само след като е завършил всеки ред на по-стария. Следователно стойността на променливата cats ще бъде последният елемент в масива. Така се записва само последната стойност.

За да се преборите с тази трагедия, можете да използвате няколко метода:

  1. Затваряния - Прочетете повече
    • Можете да направите затваряне така:cats.forEach()
  2. Обещания - Прочетете повече . Има сладка библиотека което обещава драйверът mongo да улесни работата с него.
  3. Генератори и др. - Прочетете повече . Все още не е готов за праймтайма.

Забележка относно #2 - Аз не съм сътрудник на проекта, но работя с автора. Използвам библиотеката вече повече от година и е бърза и страхотна!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Уникалното валидиране на Mongoose не работи. Записват се дублирани записи

  2. Mongo DB намира по име на поле с произволна стойност

  3. mongodb заявка, използваща _id обект в търсене на localField

  4. Как да експортирате резултатите от заявката на MongoDB в JSON файл

  5. Mongoose създава връзка за поддръжка на множество наематели в node.js