MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose добавя множество елементи към базата данни

Проблемът тук е, че в findOne обратно повикване - вашият beerId винаги ще бъде настроена на последната бира в beerObjects , защото цикълът завършва преди да стигнете до първото си обратно извикване - добре дошли в асинхронния javascript.

Едно средство за това е да опаковате вашия findOne код в IFFE (израз на незабавно извикана функция). Този код ще бъде завършен, преди да преминете към следващата бира от beerObject.

Ето малко повече информация за IFFE

Stack Overflow на IFFE

Прегледах набързо кода, вярвам, че това трябва да работи, но може да се наложи да направите някои корекции с вътрешния код...

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. mongodb:заявка за периода от време между две полета за дата

  2. Извършване на изявление на случай в рамката за агрегиране на mongodb

  3. WAMP MongoDB - PHP разширение

  4. Как да използваме MongoDB агрегиране за операции с набори с общо предназначение (обединение, пресичане, разлика)

  5. MongoDB - Вмъкнете, ако не съществува, в противен случай пропуснете