2013-06-19 3 views
3

몽구스 쿼리에서 반환 한 모든 기사 문서의 '본문'필드에 자르기 (문자열, 단어) 기능을 적용하고 싶습니다.nodejs의 MongoDB 쿼리에서 반환 된 모든 문서의 필드에 함수 적용

Article.find({}) 
    .sort({'meta.created': 'desc'}) 
    .limit(6) 
    .exec(function(err, articles) { 
       // Truncate the article.body field on each articles here? 
     res.render(articles: articles}); 
    }); 

을 같은 간단한 잘라 내기 기능 뭔가 : 나는 템플릿에 사용하기 위해 제품 구조를 유지 각 기사 본문 필드 (이 기능을 적용 할 수있는 방법을

function truncate(string, words) { 
    var value_arr = string.split(' '); 
    if(words < value_arr.length) { 
     value = value_arr.slice(0, words).join(' '); 
    } 
    return value; 
} 

다음과 같이 예로들 수)? 미리 감사드립니다.

답변

2

적절한 방법, 저는 믿습니다, static A와 자르는 방법을 당신의 기사에 truncatedBody 속성을 추가하고 구현하는 것입니다 :

Article.methods.setTruncatedBody = function(limit){ 
    //If truncatedBody is already computed, don't do anything 
    if(this.truncatedBody) 
     return; 

    var value_arr = body.split(' '); 
    if(limit < value_arr.length) { 
     this.truncatedBody = value_arr.slice(0, words).join(' '); 
    } 
    else 
     this.truncatedBody = body; 
} 

그런 다음 컨트롤러 :

Article.find({}) 
    .sort({'meta.created': 'desc'}) 
    .limit(6) 
    .exec(function(err, articles) { 
     for(var article in articles) 
      article.setTruncatedBody(5); 
     res.render(articles: articles}); 
    }); 
+0

인스턴스 메서드를 사용하는 것에 대해 생각조차하지 않았다. 조언을 주셔서 감사합니다! – adamK

관련 문제