MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose dodaje wiele pozycji do bazy danych

Problem polega na tym, że w findOne callback - Twój beerId zawsze będzie ustawione na ostatnie piwo w beerObjects , ponieważ pętla kończy się przed pierwszym wywołaniem zwrotnym — witamy w asynchronicznym javascript.

Jednym ze sposobów na to jest zawinięcie findOne kod w IFFE (Immediately Invoked Function Expression). Ten kod zakończy się przed przejściem do następnego piwa z beerObject.

Oto więcej informacji na temat IFFE

Przepełnienie stosu w IFFE

Szybko przejrzałem kod, uważam, że to powinno zadziałać, ale być może będziesz musiał wprowadzić pewne poprawki w kodzie wewnętrznym...

for(var i = 0; i < beerObjects.length; i++) {
    console.log(beerObjects[i].beerId);
    //var currentBeer = beerObjects[i]; dont need this now
    (function (currentBeer) {
        Beer.findOne({ beerId: currentBeer},
            function(err, beer) {
                if(!err && !beer) {
                    var newBeer  = new Beer();
                    newBeer.beerId = currentBeer.beerId;
                    newBeer.name = currentBeer.name;
                    newBeer.description = currentBeer.description;
                    newBeer.abv = currentBeer.abv;
                    newBeer.image = currentBeer.image;
                    newBeer.save(function(err) {
                       // log your error here...
                    });
                } else if(!err) {
                    console.log("Beer is in the system");
                } else {
                    console.log("ERROR: " + err);
                }
            }
        );   
    })(beerObjects[i].beerId);
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak ustawić domyślną ścieżkę dbpath dla mongoDB w systemie Windows 7?

  2. Jak używać mongodb z elektronem?

  3. zapytanie mongodb bez nazwy pola

  4. mongodb repliceset nowy element członkowski nie pokazuje prawidłowego użycia dysku w EC2

  5. Nie można połączyć się z bazą danych atlasu MongoDB