sql >> Database >  >> NoSQL >> MongoDB

Node.js, MongoDB - Meerdere documenten invoegen/bijwerken en één enkele reactie verzenden

Misschien wil je de async proberen module hiervoor. Het heeft een aantal zeer nuttige methoden voor het verwerken van elk item in een verzameling en biedt functionaliteit voor wanneer alle verwerking is voltooid.

Ik verwijs u in het bijzonder naar de wachtrij functie, waarmee u taken aan een wachtrij kunt toevoegen en vervolgens iets kunt doen als alle items zijn verwerkt.

U kunt bijvoorbeeld iets doen als:

var q = async.queue(function(task, callback) {
  // task.doc would contain your individual doc to process

  // your insert / update logic goes here...

  // Callback signifies you're done with this task
  callback();

}, 2) // <--- this number specifies the number of tasks to run in parallel

q.drain = function() {
  // this is the queue's callback, called when the queue is empty,
  // i.e. when all your documents have been processed.

  res.send(statusCode, message);
} 

Als we er vervolgens van uitgaan dat uw lijst met documenten in een variabele met de naam docs , het enige wat u hoeft te doen om ze allemaal te verwerken, is ze in de wachtrij te plaatsen.

for (var doc in docs) {
  q.push({ doc: docs[doc] }, function(err) {
    if (err) console.log(err);
  })
}

Protip:je moet een object duwen dat bevat het document in de wachtrij. Er is een vreemde fout opgetreden als u een onverpakt object probeert door te geven.

Als u nu de specifieke statussen wilt voor elk document dat u in Mongo verwerkt, dan is dit heel goed mogelijk op deze manier. Zolang u een gegevensstructuur buiten de wachtrij hebt geïnstantieerd, kunt u er statusCodes (enz.) aan toevoegen terwijl elk item wordt verwerkt, en de structuur naar de client in de afvoer van de wachtrij sturen functie. Zou niet te veel gedoe moeten zijn.




  1. Python-redis keys() geeft een lijst met bytes-objecten terug in plaats van strings

  2. MongoDB databaseschema-ontwerp

  3. Opvallende kenmerken van MapReduce - Belang van MapReduce

  4. Match Twee verschillende velden in Mongoose, Aggregate?