Node MongoDB查询列表带分页-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

Node MongoDB查询列表带分页

简介: 前端需要的数据结构 { "code": "0000", "desc": "OK", "body":{ "page_no": 1,//当前第几页 ...

前端需要的数据结构

{
        "code": "0000",
        "desc": "OK",
        "body":{
                "page_no": 1,//当前第几页
                "page_size": 1,//每页显示几条
                "page_total": 2,//总共几页
                "total": 2,//总共几条数据
                "data": [{
                    ...  
                 }]     //列表数据集合
        }
}

下面代码将完整展现一个列表接口

/**
 * 题目列表查询
 * 1、先查总数
 * 2、再按条件查询
 * */
const queryList = (req, res) => {
    const _params = req.body.data;
    const query = QuestionMongoDB.find({});
    let _num = _params.page_size;//每页几条
    let _total = 0;
    let _skip = _params.page_no * _num;
    let _requirement = {};
    let _id = _params.id;
    if (_id) {
        _requirement = {'_id': _params.id};
    }
    //通过查询全部数据获得总条数
    QuestionMongoDB.find(_requirement, (err, data) => {
           if(err){
            //查询错误
           }else{
            _total = data.length;//获得总条数
           }
    });
    //id是条件查询,可选参数
    if (_id) {
        query.and(_requirement);
    }
    query.limit(_num); //限制条数,每次查多少条
    query.skip(_skip);  //开始数 ,当前查第几页*每页显示第几条得到开始条数
    query.sort({'_id': -1});//排序  id 倒序
    query.exec((err, value) => {
        if (err) {
            //返回错误
        } else {
            //得到数据
            const page = {
                page_no: _params.page_no + 1,
                page_size: _num,
                total: _total,
                data:[...value]
            };
           //返回成功
        }
        mongoose.disconnect();
    })
};

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章