Итак есть база данных mongodb с именем users
Структура данных такая:
id:"testId"(тут id пользователя)
firstName:"test",
lastName:"test",
email:"my@test",
phoneNumber:6556565656,
eventsCount:2,
events:[
0:{
title:"test",
description:"test",
startDate(тип дата):"09-03-11"
endDate(тип дата):"12-12-12"
},
1:{
title:"go",
description:"out",
startDate(тип дата):"11-12-09"
endDate(тип дата):"11-11-11"
}
]
Мне нужно реализовать пагинацию поддокумента event внутри документа user.
Пока-что у меня реализовано на express так:
app.get('/user/:id',async (req,res)=>{
try {
const page=parseInt(req.query.page) || 1
const pageSize=parseInt(req.query.limit) || 1
User.findById(req.params.id).then(users=>{
res.send(users)
})
}
catch (err){
res.writeHead(500).json({
status:'error',
errorMessage:err
})
}
})
Такой endpoint возвращает целого пользователя:
id:"testId"(тут id пользователя)
firstName:"test",
lastName:"test",
email:"my@test",
phoneNumber:6556565656,
eventsCount:2,
events:[
0:{
title:"test",
description:"test",
startDate(тип дата):"09-03-11"
endDate(тип дата):"12-12-12"
},
1:{
title:"go",
description:"out",
startDate(тип дата):"11-12-09"
endDate(тип дата):"11-11-11"
}
]
Мне же нужно чтобы если запрос содержит page(req.query.page) и лимит-то делать пагинацию поддокумента events.
Например если page=1 и limit=1,то должно возвращать:
id:"testId"(тут id пользователя)
firstName:"test",
lastName:"test",
email:"my@test",
phoneNumber:6556565656,
eventsCount:2,
events:[
0:{
title:"test",
description:"test",
startDate(тип дата):"09-03-11"
endDate(тип дата):"12-12-12"
},
]
Если page=2 и limit=2 то возвращать:
id:"testId"(тут id пользователя)
firstName:"test",
lastName:"test",
email:"my@test",
phoneNumber:6556565656,
eventsCount:2,
events:[
0:{
title:"test",
description:"test",
startDate(тип дата):"09-03-11"
endDate(тип дата):"12-12-12"
},
1:{
title:"go",
description:"out",
startDate(тип дата):"11-12-09"
endDate(тип дата):"11-11-11"
}
]