我想将truncate(string,words)函数应用于mongoose查询返回的所有文章文档的“body”字段。一个例子如下:
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;
}
如何将此功能应用于每个文章正文字段(保留文章结构以便在模板中使用)?提前致谢。
答案 0 :(得分: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});
});