sql >> Database teknologi >  >> NoSQL >> MongoDB

Forespørgsel efter samme dokument parallelt i samme API i mongoDB

Det ser ud til, at du kører mere kode i den parallelle version

// The normal version
let normal = await ContentRepo.geBySkillIdWithSourceFiltered(
    [chosenSkillsArr[0].sid!],
    readContentIds,
    body.isVideoIncluded,
    true,
    true
);


// The code inside the parallel version:
chosenSkillsArr.map(async (skill: IScrapeSkillDocument) => {
        const result = await ContentRepo.geBySkillIdWithSourceFiltered(
            [skill.sid!],
            readContentIds,
            body.isVideoIncluded,
            true,
            true
        );
    })
[chosenSkillsArr[0].sid!], vs  chosenSkillsArr.map()

For den parallelle version sætter du funktionskaldet (ContentRepo.geBySkillIdWithSourceFiltered ) inde i en løkke. Derfor er det langsommere.

For spørgsmålet om at køre løfter parallelt:

Ligesom Promise.all , Promise.allSettled afvente flere løfter. Den er ligeglad med, hvilken rækkefølge de løser, eller om beregningerne kører parallelt. Begge garanterer ikke samtidighed eller det modsatte. Deres opgave er blot at sikre, at alle de løfter, der gives til den, bliver håndteret.

Så du kan ikke manuelt garantere paralleliteten af ​​løfteudførelse

Her er en virkelig interessant artikel forklarer parallelisme og Promise.All og hvordan browser Nodejs API adskiller sig fra Nodejs API installeret på din computer med hensyn til parallelitet.

Her er uddraget af artiklens konklusion:

Sidebemærkning:

Der er en subtil forskel:

  1. Promise.all:Løser kun, når alle løfter, der er givet til det, løser sig, ellers vil det afvise med den første afviste løftefejl.

  2. Promise.allSettled:Vil altid blive løst med et array med information om løste og afviste løfter.




  1. ikke i stand til at oprette forbindelse til mongodb hostet på ekstern server ved hjælp af monk

  2. Import af Dato-datatype ved hjælp af mongoimport

  3. Hvordan gemmer man kun én database i Redis?

  4. Forskellen mellem at dekorere en ejendom i C# med BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId