- 获取前端传过来的数据写mongodb查询语句
- 使用async实现异步操作控制代码
- 先查询符合条件的总数再查询分页传给前端
var express = require('express');
var router = express.Router();
var async = require('async');
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://127.0.0.1:27017/';
router.get('/list', function (req, res) {
var pageNum = parseInt(req.query.pageNum) || 1;
var pageSize = parseInt(req.query.pageSize) || 10;
var classify = parseInt(req.query.classify)
var startTime = parseInt(req.query.startTime)
var endTime = parseInt(req.query.endTime)
var param = {};
if (classify) param.classify = classify
if (startTime || endTime) param.date = {}
if (startTime) param.date['$gte'] = startTime
if (endTime) param.date['$lte'] = endTime
MongoClient.connect(url, {
useNewUrlParser: true
}, function (err, client) {
if (err) {
console.log('链接数据库失败', err);
res.json({
code: 1,
msg: '网络异常, 请稍候重试'
})
} else {
var db = client.db('myBlog');
async.waterfall([
function (cb) {
db.collection('album').find(param).count(function (err, num) {
if (err) {
cb(err);
} else {
cb(null, num);
}
})
},
function (num, cb) {
console.log(param);
db.collection('album').find(param).skip(pageSize * pageNum - pageSize).limit(pageSize).toArray(function (err, data) {
console.log(data);
if (err) {
cb(err);
} else {
cb(null, {
num: num,
data: data
});
}
})
}
], function (err, result) {
if (err) {
console.log(err);
res.json({
code: 1,
msg: '错误'
})
} else {
res.json({
code: 0,
msg: 'OK',
data: {
album: result.data,
total: result.num
}
})
}
client.close();
})
}
})
})
module.exports = router;