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

Sådan befolker man mongoose med et stort datasæt

i er dit indeks til hvor du trækker inputdata fra i catalogArray , men du forsøger også at bruge det til at holde styr på, hvor mange der er blevet gemt, hvilket ikke er muligt. Prøv at spore dem separat på denne måde:

var i = 0;
var saved = 0;
Catalog.remove({}, function(err){
    while(i < catalogArray.length){
        new Catalog(JSON.parse(catalogArray[i])).save(function(err, doc){
            saved++;
            if(err){
                console.log(err);
            } else {
                if(saved === catalogArray.length) {
                    return callback('database populated');
                }
            }
        });
        i++;
    }
});

OPDATERING

Hvis du vil tilføje strammere flowkontrol til processen, kan du bruge async modulets forEachLimit funktion til at begrænse antallet af udestående save operationer til hvad end du angiver. For eksempel at begrænse den til én udestående save ad gangen:

Catalog.remove({}, function(err){
    async.forEachLimit(catalogArray, 1, function (catalog, cb) {
        new Catalog(JSON.parse(catalog)).save(function (err, doc) {
            if (err) {
                console.log(err);
            }
            cb(err);
        });
    }, function (err) {
        callback('database populated');
    });
}


  1. Mongo Query mislykkedes med fejlkode 13 og fejlmeddelelsen 'ikke autoriseret'

  2. Node, Mongoose:Fjern json-elementet fra forespørgselsresultatet med delete

  3. Forbinder Google Cloud Functions igen til min MongoDB-klient for hver HTTP-anmodning?

  4. Jeg får denne fejl, som jeg ikke forstår hvorfor, ved at bruge NoRM og Mongo i mit MVC-projekt