2016-09-15 3 views
1

쿼리로 사용할 몽구스에 대한 전체 개체를 작성하는 방법이 있습니까? 검색 경로를 만들 때 많은 쿼리 매개 변수를 전달해야하며 미들웨어로 표현해야합니다. 그 중 내가 쿼리 개체를 구축하고 싶습니다.몽구스 쿼리에 대한 객체를 만드는 방법은 무엇입니까?

User.find(res.locals.filter.query) 
    .sort(res.locals.filter.sort) 
    .limit(res.locals.filter.limit) 
    .exec() 

내가 내 필터를 포맷 할 수있는 방법이 있나요 :

미들웨어 내부 :

res.locals.filter = { 
    query: ..., 
    projection: ..., 
    sort: ..., 
    limit: ...., 
} 

라우터 내부

나는 이런 일에 끝났다 즉시 모든 것을 전달할 수 있습니까? 몇 가지 예 아무것도하지만, 다른 단어에서

... 나를 위해 작동하는 것 같다 찾을 같은 것을 수행

User.query(filter) 

답변

0

, $query$orderBy 같은 객체 필드 find 전화의 스타일은 쉘에서 지원 (그리고 지금 을 사용되지 않음)하므로, 어떠한 내장 지원이없는되었다.

0

당신은 스키마에 static 방법으로 query를 추가하여이 작업을 수행 할 수 있습니다 :

userSchema.statics.query = function(filter) { 
    return this.find(filter.query).sort(filter.sort).limit(filter.limit); 
}; 

당신은 전화 수있는 등 :

User.query(res.locals.filter).exec(callback); 
,이 JohnnyHK에 의해 지적되면서
+0

감사합니다. 나는 이것 [link] (http://stackoverflow.com/questions/22441482/order-and-limit-results-in-a-query-with-a-callback)과 비슷한 것을 생각하고 있었다. 'myModel.find (filter, {sort : {created_at : -1}, limit : 10}, function (err, items) {})'그러나 하나의 객체로 parametr 함수를 사용하여 확장하지만 그 이름은 모른다. 그게 말이 되니? – johnymachine

+1

@johnymachine'$ query'와''$ orderBy'] (https://docs.mongodb.com/manual/reference/operator/meta/orderby/)와 같은 객체 필드를 가진'find' 호출 스타일은 지원되었습니다 쉘에서 (그리고 지금은 더 이상 사용되지 않으므로) 내장 된 지원이 없으므로 직접해야합니다. – JohnnyHK

관련 문제