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
Você pode encontrar o exemplo a que me refiro aqui
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:
@rest()
dentro de @rest()
consultas com `@export (como:…) em uso@rest()
dentro de consultas server-graphql com `@export (como:…) em uso@rest()
dentro de @client
consultasA 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.
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 ...