【问题标题】:Where condition with Mongoose PaginateMongoose Paginate 的条件
【发布时间】:2021-07-17 09:44:21
【问题描述】:

我在以前只显示所有记录的页面上应用 Mongoose Paginate。我的控制器中的原始代码如下所示:

let allEvents = await Event.find(queryObject).where('date').gte(todayFormatted).sort({'date': 1, 'startTime': 1}).populate("vendors");

应用分页,新代码如下所示:

        const events = await Event.paginate(queryObject, {
            page: req.query.page || 1,
            limit: 30,
            populate: 'vendors likes',
            sort: { 'date': 1, 'startTime': 1 }
        });

但是,我仍然需要应用条件“日期大于或等于 todayFormatted”。但似乎 Paginate 本身并不支持 where 条件;谁能告诉我如何添加类似的条件来过滤记录(即不显示过去日期的事件)?

谢谢

【问题讨论】:

    标签: node.js mongodb mongoose pagination


    【解决方案1】:

    你总是可以这样写,你可以用page(默认1)和per(默认30)分页

    const { per, page } = req.query
    const limit = parseInt(per || 30)
    const skip = parseInt(per || 30) * ((parseInt(page) || 1) - 1)
    
    queryObject.date = { $gte: todayFormatted }
    let events = await Event
      .find(queryObject)
      .limit(limit)
      .skip(skip)
      .sort({ 'date': 1, 'startTime': 1 })
      .populate("vendors");
    

    如果您已经在查询中通过date 进行过滤,您可以添加$and https://docs.mongodb.com/manual/reference/operator/query/and/

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2015-06-09
      • 2018-08-31
      • 2016-12-07
      • 2020-11-29
      • 2021-08-19
      • 2016-01-08
      • 2016-08-02
      • 2020-08-07
      相关资源
      最近更新 更多