3

我想将 truncate(string, words) 函数应用于猫鼬查询返回的所有文章文档的“正文”字段。一个例子如下:

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;
}

如何将此功能应用于每个文章正文字段(保留文章结构以在模板中使用)?提前致谢。

4

1 回答 1

2

我相信,正确的方法是将 truncatedBody 属性添加到您的文章中,并将 truncate 方法实现为static

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});
    });
于 2013-06-20T12:05:09.683 回答