es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de paginación de API Graphql.

Me gustaría obtener todos los repositorios de un usuario específico. En caso de que el usuario tenga muchos repositorios, sería mejor utilizar paginación.

Por lo que puedo ver aquí, se nos permite pasar la propiedad first y last. ¿Pero qué sucede si quiero obtener repositorios entre 10-20?

consulta MyQuery {
user(login: “someuser”) {
repositories(first:10 ) {
totalCount
nodes {
name
}
}
}
}

Puedes acceder aquí => https://docs.github.com/en/graphql/overview/explorer

Gracias de antemano

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recuperar repositorios entre un rango específico, puedes utilizar las propiedades after y before, además de first y last. Aquí hay una consulta de ejemplo que recuperaría repositorios entre 10 y 20:

    query MyQuery {
      user(login: "someuser") {
        repositories(first: 10, after: "Y3Vyc29yOjEw", last: 10, before: "Y3Vyc29yOjEwMg==") {
          pageInfo {
            hasNextPage
            hasPreviousPage
            startCursor
            endCursor
          }
          totalCount
          nodes {
            name
          }
        }
      }
    }
    

    La propiedad after especifica el cursor después del cual comenzar a recuperar datos, y before especifica el cursor antes del cual detener la recuperación de datos. En este caso, estamos comenzando después del cursor Y3Vyc29yOjEw (equivalente al desplazamiento 10) y deteniéndonos antes del cursor Y3Vyc29yOjEwMg== (equivalente al desplazamiento 20).

    Ten en cuenta que necesitas especificar totalCount, pageInfo y nodes para obtener el recuento total y la información de cursor.

    Puedes generar el cursor apropiado con endCursor o startCursor al recuperar primero los repositorios iniciales con first. startCursor sería el cursor del primer nodo, mientras que endCursor sería el cursor después del último nodo recuperado.

Comments are closed.