2014-09-12 2 views
0

Я искал во всех местах и ​​в документации Mongoose без успеха.Как найти из коллекции по его ссылке

Я хочу найти весь контент в моей коллекции пользователей, начиная с типа 'Admin'.

UserTypeSchema = new Schema({ 
    name: { 
     type: String, 
     required: true 
    }, 
    user_type: [ 
     { 
      type: Schema.Types.ObjectId, 
      ref: 'User' 
     } 
    ], 
}, { 
    strict: true 
}); 

UserSchema = new Schema({ 
    user_type: { 
     type: Schema.Types.ObjectId, 
     ref: 'UserType' 
    }, 
}, { 
    strict: true 
}); 

запрос, чтобы найти пользователей по типу (будучи еще одна модель в качестве ссылки)

User 
    .find() 
    .populate('user_type', 'name', null, {'user_type': 'Admin'}) 
    .exec(function(err, users) { 
     res.send(users); 
    }); 

Благодаря

ответ

1

Я вижу две Каковы возможности, либо вы запрашиваете схемы типа для администратора и использовать возвращаемый объект чтобы запросить таких пользователей:

Type.findOne({name: 'Admin'}, function(err, type) { 
    User.find({user_type: type._id}, function(err, users) { 
     ... 
    }) 
}) 

Или если у вас есть ссылка на вас r типа для пользователей, не могли бы вы просто сделать:

Type.findOne({name: 'Admin'}, function(err, type) { 
    var users = type.user_type; 
    ... 
}) 

Или я читаю вашу схему неправильно?

+0

Спасибо за ваш ответ. Вторая возможность возвращает пустой массив. Есть ли у вас какие-либо советы? –

+0

Это, вероятно, потому, что user_type пуст, массив user_type не будет заселен автоматически, потому что у вас есть ссылка наоборот. Вам нужно вручную установить пользователей, чтобы они работали. –

+0

@ RafaelGomes это помогло? –

Смежные вопросы