2014-09-30 3 views
0

나는이처럼 보이는 프로그램 스키마이 그에게 그 문서를 보여주고 싶지 않습니다.몽구스 제한/허용 문서

이 비어 있지 않고 기록 된 사용자의 User._id가 들어있는 경우 그 사람에게도 문서를 표시하고 싶지 않습니다.

첫 번째 아이디어는 Program.find()가 모든 문서를 가져 왔을 때 각 문서를 반복하여 문서를 반환할지 여부를 확인하는 것이 었습니다.

그러나 forEach를 사용하는 것보다 나은 해결책이 있습니까? 그들이 반환되기 전에 몽구스 메서드와 필터 문서를 사용하는 것과 같은?


솔루션 왜 user.allowed 배열에 your_user_id를 쿼리하지

var query = { 
'active': true, //shows only active programs 
$or: [{ 'user.allowed': {$size: 0} }, { 'user.allowed': req.user._id }], //true if allowed is empty or has userId in it 
'user.restricted': { $ne: req.user._id } //true if restricted doesn't contain userId 
}; 

Program.find(query, 'name owner image categories user special', function (err, p) { 
    if(err) { return handleError(res, err); } 
}) 
.sort({_id: -1}) 
.exec(function(err, programs){ 
    if(err) { return handleError(res, err); } 
    res.json(200, programs); 
}); 

답변

1

?

db.programs.find({'user.allowed': 'your_user_id'});