美文网首页技术码头
Node MongoDB查询列表带分页

Node MongoDB查询列表带分页

作者: 石菖蒲_xl | 来源:发表于2018-09-12 11:41 被阅读12次

    前端需要的数据结构

    {
            "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();
        })
    };
    

    相关文章

      网友评论

        本文标题:Node MongoDB查询列表带分页

        本文链接:https://www.haomeiwen.com/subject/wrhvgftx.html