美文网首页
使用mongoose-paginate-v2查询缓慢问题

使用mongoose-paginate-v2查询缓慢问题

作者: Godtoy | 来源:发表于2019-10-25 12:16 被阅读0次

    场景

    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 更新后回复正常

    Issue地址

    博客: https://github.com/zhaojunlike

    相关文章

      网友评论

          本文标题:使用mongoose-paginate-v2查询缓慢问题

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