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

Запазване на елементи в Mongoose For Loop с методи на схема

Когато трябва да изпълните същата асинхронна задача за елементи в масив, не използвайте обикновен for цикъл. Вижте async.each , пасва по-добре на вашия сценарий, като (само else част от вашия код):

var body = JSON.parse(response.body);

async.each(body.data, function (photoData, callback) {

  // ------------------------------------------------
  // If there is no caption, skip it
  //

  if (!photoData.caption){
    text = '';
  }
  else{
    text = photoData.caption;
  }

  // ------------------------------------------------
  // Create new photo object
  //

  var photo = new Photo({
    link: photoData.link,
    username: photoData.user.username,
    profilePicture: photoData.user.profile_picture,
    imageThumbnail: photoData.images.thumbnail.url,
    imageFullsize: photoData.images.standard_resolution.url,
    caption: text,
    userId: photoData.user.id,
    date: photoData.created_time,
    _id: photoData.id
  });

  photo.checkBlacklist(function(err, blacklist){

    if (!blacklist){
      photo.save(function(err, item){
        if (err){
          console.log(err);
        }

        console.log('Saved', item);
        callback();
      });
    }

  });

}, function (error) {
  if (error) res.json(500, {error: error});

  console.log('Photos saved');
  return res.json(201, {msg: 'Photos updated'} );
});

Не забравяйте да инсталирате

npm install async

и изискват async :

var async = require('async');


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Проекция на поддокумент

  2. Конфигурирайте и използвайте сървър за модел на mongodb за тестване на единици

  3. Създайте _id на поддокументи на mongoimport --jsonArray

  4. mongodb заявка без име на поле

  5. i18Next - NodeJS - Как да промените преводите без презареждане на сървъра