Apollo-link-rest: Não é possível combinar descanso com Graphql na mesma consulta

Criado em 4 abr. 2018  ·  9Comentários  ·  Fonte: apollographql/apollo-link-rest

Resumo

Estou tentando misturar uma solicitação de descanso com uma solicitação de graphql. Ambas as solicitações referem-se ao mesmo recurso e funcionam quando executadas individualmente. No entanto, ao tentar executar os dois juntos

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

        authors {
            id
            firstName
        }
    }

Eu obtenho o seguinte erro

image

Você pode encontrar o exemplo a que me refiro aqui

blocking bug 🐛 has-reproduction help wanted 🛠

Comentários muito úteis

Na verdade, acabei de verificar e já faz parte do apollo-utilities. @fbartho Eu estaria disposto a fazer isso se ninguém mais estiver trabalhando nisso. Parece uma solução relativamente fácil. Terá de imaginar vários cenários de teste embora ...

Todos 9 comentários

Ei @ chimon2000 - isso parece um grande bug, você se sente confortável para enviar um teste de unidade para nós que possa reproduzir isso?

Como alternativa, um PR que corrige isso seria ainda melhor. Fico feliz em ajudar, mas meu ambiente de teste principal atual não usa um servidor GraphQL real, então não estou bem configurado para verificar se isso está funcionando.

Olá @fbartho , obrigado pela resposta rápida. Eu adicionei meu repo de exemplo que contém o código necessário para reproduzir o problema com os exemplos angular e (p) react, mas posso ver como adicionar um teste de unidade para isso também.

Não sou particularmente adepto de como funcionam os links Apollo.

Ei @fbartho , adicionei um teste de reprovação de RP para vocês examinarem - é realmente um problema, espero que seja útil.

Olhando para a fonte, parece que a única vez que forward é chamado para enviar a operação para o próximo link é here .

Acho que, se quisermos oferecer suporte ao comportamento de mesclagem, precisamos inspecionar a consulta, remover as peças não remanescentes e encaminhá-las para o próximo link.

Acho que basicamente copiar esta seção de apollo-link-state seria suficiente (pode até fazer sentido coordenar com os mantenedores para extrair esse tipo de lógica em um pacote separado, uma vez que parece muito útil para construtores de links).

Na verdade, acabei de verificar e já faz parte do apollo-utilities. @fbartho Eu estaria disposto a fazer isso se ninguém mais estiver trabalhando nisso. Parece uma solução relativamente fácil. Terá de imaginar vários cenários de teste embora ...

@paulpdaniels Cara, eu adoraria. Por favor, vá em frente.

Cenários perigosos específicos, quero ter certeza de que apoiamos / não quebramos:

  • Aninhando @rest() dentro de @rest() consultas com `@export (como:…) em uso
  • Aninhando @rest() dentro de consultas server-graphql com `@export (como:…) em uso
  • Aninhando @rest() dentro de @client consultas
  • Certificando-se de que isso não quebra os codepaths Typename Patcher!

A diretiva de exportação não parece funcionar dentro de consultas server-graphql. Recebo o seguinte erro: Diretiva "export" desconhecida.

@marcelombc isso dependeria da implementação do seu servidor. Acho que apollo-server vem com ele pronto para uso, mas não acho que seja necessário ser compatível com as especificações.

@paulpdaniels Você está certo. Estou usando grafeno no servidor e só precisava criar uma diretiva personalizada para oferecer suporte a @export. Obrigado pela ajuda.

Esta página foi útil?
0 / 5 - 0 avaliações