2013-12-20 3 views
1

У меня есть users модель, которая может содержать несколько notifications. В NotificationSchemanotifier содержит идентификатор пользователя и ссылается на модель users. Когда я выполнить следующий запрос:Mongoose - Ограничить поля по ссылочной модели

User.find().populate('notifications.notifier').exec(function(err,users){ 
    //users[0].notifications[0].notifier  
    //I am getting all fields from the referenced user 
    //I don't want the whole document but some fields only 
}); 

Как может кто-Limit/Ограничить поля, которые должны быть доступны в то время как ссылки на какой-либо модели.

Вот users модель

var NotificationSchema =new Schema({ 
    notifier : {type:Schema.Types.ObjectId, ref:'users'}, 
    //How could I say : 
    //notifier : {type:Schema.Types.ObjectId, ref:'users', fields:['_id', 'name']} 
    //because I know what fields do I need from referenced model for this Schema. 

    __SOME__ 
    __OTHER__ 
    __FIELDS__ 
}); 

var UsersSchema = new Schema({ 
    name : {given:String, middle:String, family:String} 
    email:String, 
    password:String, 
    notifications : [NotificationSchema] 
}); 

var Users = mongoose.model('users', UsersSchema); 

Кстати, у меня нет отдельного model для NotificationSchema.

Если эта функция недоступна из коробки, как я могу ее реализовать вручную. Я пропустил некоторые документы? Сообщите мне robust способ сделать это.

ответ

0

Я нашел его в Mongoose документы

Я нашел ответ в Выбор поля Секцию the documentation

User.find().populate('notifications.notifier', '_id name').exec(function(err, users) { 
//users[0].notifications[0].notifier   ^^^^^^^^^ HOW FUNNY 
//Yes I am getting '_id' and 'name' fileds only 
}); 
Смежные вопросы