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

използвайки module.exports по необичаен начин

Много неща не са наред с това. Тази концепция няма да работи.

Като начало, вашият while(true) loop блокира цикъла на събитията, така че db никога не може да получи стойност, така че вашият цикъл никога не завършва.

Когато мрежовата операция в свързването завърши, тя ще добави събитие към опашката на събития и обратното извикване, свързано с него (и след това разрешеното обещание), може да се изпълни само когато върнете контрола обратно към цикъла на събития, така че това събитие да може да бъде обработено.

Но вашият while(true) loop блокира цикъла на събитията, така че никакви събития не могат да бъдат обработени. Освен ако не използвате await вътре в цикъла (който позволява да се изпълняват други събития), не можете да използвате цикъл на изчакване като този в node.js. Той просто създава безкраен цикъл.

Докато имаме await от най-високо ниво който работи с инициализация на модул (по който се работи), не можете директно да експортирате стойност, получена асинхронно.

Вместо това можете да експортирате обещание и повикващият трябва да използва обещанието, за да получи db. Или експортирайте функция, която връща обещание.

Повече информация за проблемите с цикъла заето и изчакване в тези други отговори:

Изчакайте до flag=true

javascript - Какво не е наред с този цикъл while? безкраен цикъл

Защо докато цикълът блокира цикъла на събитията?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Неизменни ли са данните, върнати от Mongoose?

  2. MongoDB $ оператор

  3. Грешка в същото поле в агрегиране _id

  4. Mongodb комбинира обобщени заявки

  5. Изпълнение на множество заявки в mongo`