0

I have 2 schemas (event, venue)
Event Schema is as shown below:

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var EventSchema = mongoose.Schema({
  _id:mongoose.Schema.Types.ObjectId,
  name:{type:String,unique:true},
  venue:[{type:mongoose.Schema.Types.ObjectId, ref:'venue'}],
  status:{type:Number, default:0}
});

var Event = module.exports = mongoose.model('Event', EventSchema);

Venue Schema is as shown below:

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var VenueSchema = mongoose.Schema({
  _id:mongoose.Schema.Types.ObjectId,
  name:{type:String,unique:true},
  status:{type:Number,default:0}
});
var Venue = module.exports = mongoose.model('Venue', VenueSchema);


I need the output something as shown below:

[{
  event :{
     _id:
     name:
     venue:[{
       _id:
       name:
     }]
  }
}]

Please help me refering changes in schema or in nodejs code to populate the same with the one to many relation.

1 Answers1

0

You can achieve this using Populate.

    Events.
      findOne({ name: 'Casino Royale' }).
      populate('venue').
      exec(function (err, eventsData) {
        if (err) return handleError(err);
        console.log('Your data', eventsData);
      });
Harshal Yeole
  • 4,812
  • 1
  • 21
  • 43