mongoose如何取得全部结果数量并只提取部分结果
如题,在跟着 这个课程 ,写一个博客系统,不过我想把里面用mongodb写的部分改成mongoose的方法。取文章这里遇到了些问题, 原文是这样写的。
Post.getTen = function(name, page, callback) {
//打开数据库
mongodb.open(function (err, db) {
if (err) {
return callback(err);
}
//读取 posts 集合
db.collection('posts', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
var query = {};
if (name) {
query.name = name;
}
//使用 count 返回特定查询的文档数 total
collection.count(query, function (err, total) {
//根据 query 对象查询,并跳过前 (page-1)*10 个结果,返回之后的 10 个结果
collection.find(query, {
skip: (page - 1)*10,
limit: 10
}).sort({
time: -1
}).toArray(function (err, docs) {
mongodb.close();
if (err) {
return callback(err);
}
//解析 markdown 为 html
docs.forEach(function (doc) {
doc.post = markdown.toHTML(doc.post);
});
callback(null, docs, total);
});
});
});
});
};
获得总数是用来判断是否为最后一页的,但是我用mongoose写的话不知道该如何获取查询到查询结果的总数,写到这样不知道如何写了
Post.getFive = function(name,page,callback){
var querystr = {};
if(name){
querystr.name = name;
}
var query = Post.find(querystr).skip((page-1)*5).limit(5);
query.sort({time:-1});
query.exec(function(err,results){
if(err){
console.log(err);
}
else{
results.forEach(function (doc) {
doc.post = markdown.toHTML(doc.post);
});
console.log(total);
callback(null, results, total);
}
})
}
求大神指点下。。。
雾雨魔理沙S
11 years, 6 months ago