хорошо, так что в этом случае мы можем изначально идти только с запросом поиска.
позже вы можете реализовать с aggregation
.
так что идея в том,
на каждой странице мы будем показывать данные каждого дня, не важно сколько их там.
[конечно, не очень хорошая идея, когда у вас есть огромное количество данных за этот день или по вашему запросу]
вот что я реализовал для вас:
router.get('/:page?', (req, res, next) => {
const page = req.params.page ? req.params.page : new Date().getDate();
const currentYear = new Date().getFullYear();
const currentMonth =new Date().getMonth();
Upload.find({
"createdAt": {
"$gte": new Date(currentYear, currentMonth, page),
"$lt": new Date(currentYear, currentMonth, page)}
})
.populate('user text')
.exec((err, uploads) => {
if (err) return next(err)
//uploads contains the result of date `page` of `currentMonth` month and year `currentYear`
res.render('record', {
title: 'Records',
data: uploads,
resultDay:page
});
})
});
несколько вещей, которые нужно запомнить, здесь мы не можем использовать limit
& skip
, поскольку мы пытаемся сделать запрос на один день.
так что в этом случае, если вы передадите параметр page
как 1
, он даст результат 1-го числа текущего месяца и текущего года.
здесь мы не знаем, сколько страниц будет там, потому что мы не знаем, на какой день, сколько документов есть заранее.
Итак, в ожидаемом интерфейсе вы покажете кнопку Next
и назовите этот API. со значением +1
текущего значения страницы.
и соответственно вы можете показать кнопку previous
тоже.
чтобы подсчитать все документы одного дня, вы можете передать часть пояснения, которую мы уже используем внутри .find()
в .count()
.
Надеюсь, это поможет,
дайте мне знать, если я что-то пропустил.