mongoose这样查数据库前10条快吗,Article.find({}, 'XXX').limit(10).exec(),find方法是不是找出集合所有数据啊,然后取出10条,会不会有性能问题。但是不管这个集合多大,我只想要前10条有什么性能优化方法吗?
分页查询
// 失败后的模板
const errorTem = (msg, error) => res.send({
code: 500,
msg,
error
});
// 查詢成功后数据返回的模板
const successTem = (msg, data) => ({
code: 200,
msg,
data
})
// 接口逻辑
router.post('/list', (req, res) => {
let {
pageSize, // 每页多少条
pageNo, // 当前页
} = req.body
const regFn = (arr) => {
const params = {}
arr.forEach(key => {
if (!req.body[key]) return
params[key] = new RegExp(req.body[key], 'i')
});
return params
}
// 记录查询后的状态(防止查询多次)
const find = Client.find(regFn(['name', 'phone']));
// 此处为了获取总数
find.then((datas) => {
// 此处是分页查询 limit:获取多少条数据;skip:跳过多少条数据
find.limit(pageSize).skip(pageSize * (pageNo - 1)).then((data) => {
res.send(successTem('查询成功', {
data,
total: datas.length
}))
}).catch(e => res.send(errorTem('查询失败', e)))
}).catch(e => res.send(errorTem('查询失败', e)))
})