sql >> Databasteknik >  >> NoSQL >> MongoDB

använder module.exports på ett ovanligt sätt

Många saker är fel med detta. Det här konceptet fungerar inte.

Till att börja med, din while(true) loop blockerar händelseloopen så db kan aldrig få ett värde så din loop slutförs aldrig.

När nätverksoperationen i anslutningen är klar kommer den att lägga till en händelse i händelsekön och återuppringningen som är associerad med den (och sedan det lösta löftet) kan bara köras när du återställer kontrollen tillbaka till händelseslingan så att händelsen kan behandlas.

Men, din while(true) loop blockerar händelseloopen så att inga händelser kan behandlas. Såvida du inte använder await inuti loopen (som gör att andra händelser kan köras) kan du inte använda en vänteloop som denna i node.js. Det skapar bara en oändlig loop.

Tills vi har await på toppnivå som fungerar med modulinitiering (som arbetar med), kan du inte direkt exportera ett värde som erhålls asynkront.

Istället kan du exportera ett löfte och den som ringer måste använda löftet för att få db. Eller exportera en funktion som returnerar ett löfte.

Mer information om problem med busy-wait while loop i dessa andra svar:

Vänta tills flagga=true

javascript - Vad är det för fel med denna while-loop? oändlig loop

Varför gör en medan loop blockera händelseloopen?




  1. Mongoose med mongodb hur returnerar man just sparat objekt?

  2. MongoDB $gt Aggregation Pipeline Operator

  3. Använda en objektegenskap som argumentet $maxDistance i en mongodb geolokaliseringsfråga

  4. Automatisk beräkning av fält i mongodb