猫鼬分页的条件

时间:2021-07-17 00:55:10

标签: node.js mongodb mongoose pagination

我在以前只显示所有记录的页面上应用 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 条件;任何人都可以请教我如何添加类似的条件来过滤记录(即不显示过去日期的事件)?

谢谢

1 个答案:

答案 0 :(得分:0)

你总是可以这样写,你可以用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/