Apollo-link-rest: No se puede combinar el resto con graphql en la misma consulta

Creado en 4 abr. 2018  ·  9Comentarios  ·  Fuente: apollographql/apollo-link-rest

Resumen

Estoy intentando entremezclar una solicitud de descanso con una solicitud graphql. Ambas solicitudes se refieren al mismo recurso y funcionan cuando se ejecutan individualmente. Sin embargo, al intentar ejecutar los dos juntos

const QUERY_AUTHORS_AND_PEOPLE = gql`
    query {
        people @rest(type: "[Person]", path: "authors/") {
            firstName
        }

        authors {
            id
            firstName
        }
    }

Obtuve el siguiente error

image

Puede encontrar el ejemplo al que me refiero aquí.

blocking bug 🐛 has-reproduction help wanted 🛠

Comentario más útil

En realidad acabo de comprobar y que ya forma parte de Apollo-utilidades. @fbartho Estaría dispuesto a asumir esto si nadie más ya está trabajando en ello. Parece una solución relativamente fácil. Sin embargo, tendrá que imaginar varios escenarios de prueba ...

Todos 9 comentarios

Hola @ chimon2000 , esto suena como un gran error, ¿te sientes cómodo enviándonos una prueba unitaria que pueda reproducir esto?

Alternativamente, un PR que solucione esto sería aún mejor. Me complace ayudar, pero mi entorno de prueba principal actual no usa un servidor GraphQL real, por lo que no estoy configurado para verificar que esto esté funcionando.

Hola @fbartho , gracias por la rápida respuesta. Agregué mi repositorio de ejemplo que contiene el código necesario para reproducir el problema con ejemplos angulares y (p) reaccionar, pero puedo ver cómo agregar una prueba unitaria para esto también.

No soy particularmente experto en cómo funcionan los enlaces apolo.

Hola @fbartho , agregué una prueba de falla de relaciones públicas para que ustedes la

Al buscar en la fuente, parece que la única vez que se llama a forward para enviar la operación al siguiente enlace es here .

Creo que si queremos respaldar el comportamiento de fusión, debemos inspeccionar la consulta, eliminar las piezas que no están en reposo y reenviarlas al siguiente enlace.

Creo que básicamente copiar esta sección de apollo-link-state sería suficiente (incluso podría tener sentido coordinarse con los mantenedores para extraer ese tipo de lógica en un paquete separado, ya que parece realmente útil para los creadores de enlaces).

En realidad acabo de comprobar y que ya forma parte de Apollo-utilidades. @fbartho Estaría dispuesto a asumir esto si nadie más ya está trabajando en ello. Parece una solución relativamente fácil. Sin embargo, tendrá que imaginar varios escenarios de prueba ...

@paulpdaniels Amigo, me encantaría. Por favor, acéptelo.

Escenarios peligrosos específicos que quiero asegurarme de que admitimos / no rompemos:

  • Anidando @rest() dentro de @rest() consultas con `@export (as:…) en uso
  • Anidando @rest() dentro de las consultas server-graphql con `@export (as:…) en uso
  • Anidando @rest() dentro de @client consultas
  • ¡Asegurándose de que esto no rompa las rutas de código de Typename Patcher!

La directiva de exportación no parece funcionar dentro de las consultas server-graphql. Recibo el siguiente error: Directiva desconocida "exportar".

@marcelombc , dependería de la implementación de su servidor, supongo, apollo-server viene con él, pero no creo que sea necesario para cumplir con las especificaciones.

@paulpdaniels Tienes razón. Estoy usando grafeno en el servidor y solo necesitaba crear una directiva personalizada para admitir @export. Gracias por tu ayuda.

¿Fue útil esta página
0 / 5 - 0 calificaciones