Apollo-link-rest: Problema com novo estilo {args.id}

Criado em 16 jul. 2018  ·  5Comentários  ·  Fonte: apollographql/apollo-link-rest

Oi,

Acabei de atualizar a biblioteca e tenho problemas para fazer upgrade. Sem qualquer alteração, a funcionalidade funciona conforme o esperado, com um aviso para migrar para o novo estilo. Quando eu faço as alterações necessárias como abaixo, percebo que {args} e {args.name} são indefinidos. Aqui está o código:

const restLink = new RestLink({
  uri: 'https://avoindata.prh.fi/bis/v1',
  typePatcher: {
    BusinessPayload: data => ({
      ...data,
      results: data.results.map(business => ({
        __typename: 'Business',
        ...business
      }))
    })
  }
});

const client = new ApolloClient({
  link: restLink,
  cache: new InMemoryCache()
});

const query = gql`
  query($name: String!) {
    companies(name: $name)
      @rest(
        type: "BusinessPayload"
        path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
      ) {
      results {
        name
        businessId
      }
    }
  }
`;

// And then call the query:
client.query({ query, variables: { name: value } });

Estou esquecendo de algo?

blocking bug 🐛 has-reproduction

Comentários muito úteis

Corrigido na v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Informe se você ainda está vendo!

Todos 5 comentários

O mesmo problema. Acabou de ficar indefinido usando o novo estilo {args.id}.

Grande captura @karensg @haipengz - Esta é uma das principais prioridades para mim, mas fui interrompido ontem antes de poder testar totalmente essas alterações.

@karensg Embora sua sintaxe deva funcionar (e é um bug que não funciona), eu pretendia que a API fosse usada de maneira um pouco diferente.
Em vez de: path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
Eu pretendia que fosse: path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} ou {args.query.deeper} pega o objeto apontado pelo caminho da chave e o transforma em uma string de consulta. Então &{args} em sua situação seria { name: "foo" } se torna &name=foo onde foo automaticamente recebe encodeURIComponent chamado nele.

Considero essa minha segunda prioridade imediata, mas estou combatendo incêndios no trabalho, então só vou chegar lá à tarde. Em geral, agradeço qualquer ajuda que vocês possam fornecer, você pode me encontrar na folga do ApolloGraphQL na # apollo-link-rest room.

Uma coisa que seria realmente útil / aceleraria minha correção seria algum código para testes de unidade para cada caso que você está usando, para que eu possa ter certeza de que funcionará para você no futuro.

Corrigido na v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Informe se você ainda está vendo!

@fbartho Obrigado pelas correções! Agora funciona para meu caso de uso.

Obrigado novamente!
Após a atualização para a v0.4.1, o novo estilo {args.id} agora funciona para o meu caso, não ficou mais indefinido.

...
const GET_DOG_IMAGES_BY_BREED = gql`
  query breeds ($breed: String!) {
    imagesByBreed(breed: $breed) @rest(
      type: "imagesByBreedResult"
      path: "breed/{args.breed}/images"
      endpoint: "dogApi"
    ) {
      status
      message
    }
  }
`

...
<Query query={GET_DOG_IMAGES_BY_BREED}
    notifyOnNetworkStatusChange
    variables={{ breed: 'hound' }}
 >
  {({ refetch, error, data, networkStatus, }) => {
    expect(error).toBeUndefined()
    expect(data).toBeDefined()
  }}
</Query>
...

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