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);
}
})
}
求大神指点下。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Mongoose 里面是使用 Model#count 来获得数量的。看起来你这里的
Post
应该就是个 model 吧,使用Post.count
加上合适的条件就行了。刚好自学碰到,贴一下我写的code
其实官方文档上有类似的链接描述
var page = req.query.p ? parseInt(req.query.p) : 1;
这段有问题,请使用isNaN