前端需要的数据结构
{
"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();
})
};