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.

¿Cuál es el valor correcto para `startCursor` y `endCursor` en `PageInfo` cuando no hay elementos/bordes? ¿La especificación de paginación de Relay está incorrecta?

La especificación de paginación Relay dice lo siguiente sobre PageInfo:

También debe contener los campos startCursor y endCursor, ambos de los cuales devuelven cadenas opacas no nulas.

[…]

startCursor y endCursor deben ser los cursores correspondientes al primer y último nodo en los bordes, respectivamente.

Pero, ¿qué sucede si quiero devolver cero elementos? Hay muchas razones por las cuales una solicitud a ese punto final específico podría devolver una conexión vacía.

No veo qué valores deberían tener startCursor y endCursor en ese caso. La respuesta obvia es null, pero la especificación dice explícitamente “no nulo”. ¿Qué pasa con eso?

Por cierto, he revisado aproximadamente 15 artículos sobre el tema de la “paginación de GraphQL” y todos ellos ignoran el problema o asignan null en caso de una lista vacía. Así que en este punto parece que la especificación simplemente es incorrecta o incompatible con el mundo real.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en graphql, paginación y Relay, es importante seguir la especificación de paginación de Relay al implementar la paginación en aplicaciones de graphql. Sin embargo, puede haber casos en los que una solicitud a un punto final específico devuelva una conexión vacía, lo que plantea la pregunta de qué valores deberían tener startCursor y endCursor en ese caso. La especificación de paginación de Relay dice explícitamente que tanto startCursor como endCursor deben devolver cadenas opacas no nulas, lo que puede parecer incompatible con el mundo real, ya que la respuesta obvia sería null en el caso de una lista vacía.

    Si bien la especificación puede parecer incorrecta o incompatible con el mundo real, es importante recordar que la especificación de paginación de Relay es una guía o un protocolo que se debe seguir en la medida de lo posible para garantizar la consistencia y interoperabilidad entre diferentes implementaciones de graphql. Por lo tanto, aunque pueda resultar tentador asignar null a startCursor y endCursor en caso de una lista vacía, sería mejor seguir la especificación lo más cerca posible para evitar posibles problemas o conflictos con otras implementaciones o herramientas de graphql. En última instancia, depende de los desarrolladores o equipos individuales decidir si seguir la especificación estrictamente o realizar ajustes basados en sus propias necesidades y requisitos.

Comments are closed.