2014-12-24 5 views
0

Я хочу выполнить метод isAparticipant перед отправкой данных json, и я не знаю, как правильно это сделать, и event.find() возвращает json, а не экземпляр модели, и я думаю Если я делаю forEach on evts (данные JSON), это плохая идея.Выполнить метод для каждого найденного doc

Контроллер:

var Event = require('../../model/event'); 
var eventsController = { 

     // Get Events List 
     index: function(req, res){ 
     // var currentUser = req.user; 
     Event.find(function(err, evts){ 
      if(err){ 
      res.status(400).json({success: false, errors: err.errors}); 
      }else{ 
      res.status(200).json({success: true, events: evts}); 
      } 
     }); 
     } 

}; 

// Export eventsController 
module.exports = eventsController; 

Модель:

var mongoose = require('mongoose'); 
var EventsSchema = new mongoose.Schema({ 

    title:{ 
     type: String, 
     unique: true, 
     required: true, 
    }, 

    teaser: { 
     type: String, 
     required: true 
    }, 

    description: { 
     type: String, 
     required: true 
    }, 

    participants: [{type: mongoose.Schema.Types.ObjectId, ref: 'User'}], 

    start_date: { 
     type: Date, 
     required: true 
    }, 

    end_date: { 
     type: Date, 
     required: true 
    }, 

    lat: { 
     type: String, 
     required: true 
    }, 

    lng: { 
     type: String, 
     required: true 
    }, 

    created_at: { 
     type: Date, 
     default: Date.now 
    }, 

    updated_at: { 
     type: Date, 
     default: Date.now 
    } 

}); 



// Check If User is A particpant 
EventsSchema.methods.isAparticipant = function(userId) { 
    if(this.participants.indexOf(mongoose.Schema.Types.ObjectId(userId)) != -1){ 
    this.isParticipant = true; 
    }else{ 
    this.isParticipant = false; 
    } 
}; 



var Evt = mongoose.model('Event', EventsSchema); 



module.exports = Evt; 

ответ

1

В evts является массивом, можно выполнить функцию forEach в цикле по массиву в синхронном режиме:

evts.forEach(function(evt) { 
    evt.isParticipant(req.user.id); 
}); 
res.status(200).json({success: true, events: evts}); 
Смежные вопросы