안녕하세요 난 당신이 내가 당신이 방법을 알고있는 경우이 쉽게 이루어집니다 의심, 나 동적 메소드 체인을 구축 할 수 있는지 궁금 배열에서 메소드를 추가 mongo 데이터베이스를 쿼리하고 있습니다. ,은, 몽구스와 Node.js를 I을 사용하여</p> <p>...
transaction = {
model: a mongoose model
req: Express.js request object
res: Express.js response object
query: a mongo db query eg, {_id:xxxxx}
populate: [ {
field: 'name_of_doc_field'
select: 'field1,field2'
} ]
}
나는 동적으로 쿼리를 작성하고있어, 그리고 기능에 내가 채울해야합니다 얼마나 많은 필드 모르는 : 는 내가 객체가되는 다음과 같습니다 전달한 함수를 사용 오프셋 또는 제한이 필요한지 여부를 나타냅니다.
나는 체인 내 발견 : 원함에 방법을 .skip 추가 인 경우
transaction.model.find(transaction.query).skip(offset).limit(limit).exec(function(err, collection_obj){...})
내가 동적으로 체인을 구축하려면 어떻게, 내가 테스트 개체에 제공된 오프셋 여부를 테스트해야합니다을 체인 등, 그리고 populate 메서드와 함께, 항목의 배열이있을 것입니다, 그 배열의 각 항목은 체인에 추가하는 새로운 채우기 메서드가 필요합니다.
마지막으로 체인 끝까지 exec 메소드가 필요합니다. 당신은 조건부 transaction
의 내용을 기반으로 수행 할 수있는 단계로 체인을 분리 할 수 있습니다
// Generated by CoffeeScript 1.4.0
module.exports = {
findMany: function(transaction) {
var collection_obj, limit, offset;
offset = parseInt(transaction.req.query.offset) || 0;
limit = parseInt(transaction.req.query.limit) || 100;
collection_obj = null;
return transaction.model.find(transaction.query).skip(offset).limit(limit).exec(function(err, collection_obj) {
return found(err, collection_obj, transaction.req, transaction.res);
});
},
}
귀하의 API는 나에게 매우 퍼지 보인다 . 당신은'transaction.model'은 몽구스 모델이라고 말합니다. 이미 찾은'find' 함수가 있나요? 그렇지 않다면 몽구스 API를 확장 할 예정입니까? –
'skip','limit','exec' 메쏘드가'transaction'이나'model'에 작용하기를 원합니까? – Bergi
이 기능을 분리 한 이유는 많은 모델에서이 기능을 반복 할 예정이기 때문입니다. 트랜잭션 객체가 제공하는 레코드를 주어진 모델에서 찾고 싶습니다. 나는 뭔가를 잘못 이해하고 있는가? 현재는 그대로 작동하지만 누락 된 '제한'과 같은 속성을 처리하지 않으며 .populate 메소드를 실행하지 않습니다. 변경 사항을 동적으로 추가하는 방법을 사용할 수 없기 때문에 정렬. –