Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

204
Visualizações
La forma correcta de hacer la paginación en mongo db

Estoy tratando de crear un sitio web de blog con paginación usando MongoDB y expresar dónde los usuarios podrán obtener páginas con límite en la cantidad de publicaciones en cada página ordenadas de más reciente a más antigua

Mi implementación de la paginación es la siguiente...

Por ejemplo, si un cliente desea realizar una solicitud para obtener publicaciones para la tercera página, con un tamaño de página de 5 publicaciones por página, realizará la siguiente solicitud al servidor

GET// {serverUrl}/posts?pagesize=5&pagenumber=3

este es el código en node/express

 app.get('/posts', async function(req, res, next) { const pagesize = req.query.pagesize || 0; //5 const pagenumber = req.query.pagenumber || 0; //3 const postsToSkip = (pagenumber -1) * pagesize; //10 try { // skip 10 and limit 5 const posts = await posts.find().sort({date: -1}).skip(postsToSkip).limit(pagesize) return res.status(200).send(posts.toArray()); } catch(error) { return res.status(500).send('something went wrong'); } });

El código funciona perfectamente bien, el problema es el siguiente

para simplificar, lea detenidamente lat's, digamos que hay 100 publicaciones en la base de datos, y todas tienen una identificación 1-100, por lo que la publicación más antigua tiene una identificación de 1 y la publicación más nueva tiene una identificación de 100

digamos que un usuario va al sitio web de publicaciones de blog (creado por React, por ejemplo), React realiza una solicitud al servidor

GET// {serverUrl}/posts?pagesize=5&pagenumber=1

Luego, el servidor realiza una solicitud a MongoDB para obtener las 5 publicaciones más recientes (ID 96-100)

posts.find().skip(0).limit(5)

y luego lo envía de regreso a React, y reaccionar los muestra en la página, ahora si, por ejemplo, antes de que el usuario vaya a la página siguiente, un usuario diferente agrega 5 publicaciones nuevas a la base de datos (todas obtienen ID de 101 -105), ahora cuando el usuario vaya a la página siguiente, React hará una solicitud al servidor para obtener la segunda página

GET// {serverUrl}/posts?pagesize=5&pagenumber=2

el servidor ahora hará una solicitud a MongoDB para obtener la página número 2 posts.find().skip(5).limit(5) pero ahora la segunda página será idéntica a la primera página, ya que cuando el usuario visitó el sitio web por primera vez y estaba en la primera página, las 5 publicaciones más nuevas tenían ID de 96-100, pero cuando fue a la segunda página después de agregar las 5 publicaciones, las 5 publicaciones más nuevas tenían ID 101-105 y las segundas 5 publicaciones más nuevas serán ser las publicaciones con ID de 96-100 iguales a las que estaban en la primera página cuando el usuario visitó el sitio web por primera vez, lo que hace que la segunda página sea idéntica a la primera página

Me gustaría saber si hay alguna implementación para superar este comportamiento extraño.

Esta es la primera pregunta que publico en stackoverflow.com, me gustaría escuchar sus comentarios...
muchas gracias 😊😊😊

about 4 years ago · Santiago Gelvez
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda