场景
mongoose-paginate-v2 是一个mongoose上的分页插件,我也用过很多次了,但是最近在创建项目遇到了问题。
老代码中不使用分页插件进行查询,然后自己使用中间件进行分页
old codes, 16ms
@Get('')
public async index(@Query() query, @Pager() pager: any, @Req() req: Request, @Res() res: Response) {
const map: any = {};
if (query.group && query.group !== '') {
map.group = query.group;
}
if (query.username && query.username !== '') {
map.username = { $regex: query.username };
}
const count = await this.model.countDocuments(map);
const page = pager.parse(count);
console.log(page);
const list = await this.model.find(map).sort({ updateAt: -1 })
.limit(page.limit)
.skip(page.skip)
.select('_id group username device.deviceType deviceType createAt updateAt status enable creator proxy')
.populate('group');
return res.status(HttpStatus.OK).json({
message: 'success',
data: {
list: [],
},
});
}
新代码中使用分页插件,耗时约1.5s 非常的缓慢
use paginate: 1532ms
public async slow(@Query() query, @Pager() pager: any, @Req() req: Request, @Res() res: Response) {
const map: any = {};
if (query.group && query.group !== '') {
map.group = query.group;
}
if (query.username && query.username !== '') {
map.username = { $regex: query.username };
}
const count = await this.model.count(map);
const page = pager.parser(count);
console.log(page);
const list = await this.model.paginate(map, {
limit: pager.limit,
offset: pager.skip,
select: '_id group username device.deviceType deviceType createAt updateAt status enable creator proxy',
populate: ['group'],
sort: { updateAt: -1 },
});
return res.status(HttpStatus.OK).json({
message: 'success',
data: list,
});
}
提issue
我也挺忙的,所以没去看代码,直接提了issue,目前收到回复是需要更新到新版本v1.3.3
更新后回复正常
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦