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