2016-07-20 7 views
4

У меня есть запрос, как это:Как переименовать путь в ответ на заселить

galleryModel.find({_id: galleryId}) 
      .populate({ 
       model: 'User', 
       path: 'objectId', 
       select: 'firstName lastName' 
      }) 

End ответа на objectId будет выглядеть следующим образом:

objectId: { 
... 
} 

Как я могу изменить его user в ответ без изменения реального пути?

ответ

0

Вы можете сделать это путем виртуального заполнения, внесенного в версию 2010 мангуста. Для этого вам нужно определить виртуальное поле в схеме мангуста.

var GallerySchema = new mongoose.Schema({ 
    name: String, 
    objectId: { 
     type: mongoose.Schema.Types.ObjectId 
    }, 
}); 

GallerySchema.virtual('user', { 
    ref: 'User', 
    localField: 'objectId', 
    foreignField: '_id' 
}); 

Ans, когда вы запускаете запрос на поиск, просто заполните его пользователем.

Gallry.find({_id: galleryId}).populate('user','firstName lastName').exec(function(error, gallery) { 
    console.log(error); 
    console.log(gallery);; 
}); 

Приведенный выше код не проверяется в программе, могут быть опечатки, Вы можете получить более подробную информацию о мангуста виртуальной заселить на ссылку ниже

http://mongoosejs.com/docs/populate.html