Apollo-link-rest: Problème avec le nouveau style {args.id}

Créé le 16 juil. 2018  ·  5Commentaires  ·  Source: apollographql/apollo-link-rest

Salut,

Je viens de mettre à jour la bibliothèque et j'ai des problèmes de mise à niveau. Sans aucune modification, la fonctionnalité fonctionne comme prévu avec un avertissement pour migrer vers le nouveau style. Lorsque j'apporte les modifications nécessaires comme ci-dessous, je constate que {args} et {args.name} ne sont pas définis. Voici le code :

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 } });

Est-ce que j'ai raté quelque chose ?

blocking bug 🐛 has-reproduction

Commentaire le plus utile

Corrigé dans la v0.4.1 : https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Veuillez me faire savoir si vous le voyez toujours !

Tous les 5 commentaires

Même problème. Je viens d'être indéfini en utilisant le nouveau style {args.id}.

Bonne prise @haipengz -- C'est une priorité clé pour moi, mais j'ai été interrompu hier avant de pouvoir tester pleinement ces changements.

@karensg Bien que votre syntaxe devrait fonctionner (et c'est un bogue qui ne fonctionne pas), j'avais l'intention d'utiliser l'API légèrement différemment.
Au lieu de : path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
Je voulais que ce soit : path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} ou {args.query.deeper} prend l'objet pointé par le chemin de la clé, puis le transforme en une chaîne de requête. Donc &{args} dans votre situation serait { name: "foo" } devient &name=foo où foo obtient automatiquement encodeURIComponent appelé dessus.

Je considère que c'est ma deuxième priorité immédiate, mais je lutte contre les incendies au travail, donc je n'y arriverai pas avant l'après-midi. En général, j'apprécie toute aide que vous pouvez fournir, vous pouvez me trouver dans le slack ApolloGraphQL dans la salle de repos #apollo-link-rest.

Une chose qui serait vraiment utile / accélérerait mon correctif serait un code pour les tests unitaires pour chaque cas que vous utilisez, afin que je puisse m'assurer que cela fonctionne pour vous à l'avenir.

Corrigé dans la v0.4.1 : https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Veuillez me faire savoir si vous le voyez toujours !

@fbartho Merci pour les corrections ! Cela fonctionne maintenant pour mon cas d'utilisation.

Merci encore!
Après la mise à niveau vers la version 0.4.1, le nouveau style {args.id} fonctionne désormais pour mon cas, il n'est plus défini.

...
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>
...

Cette page vous a été utile?
0 / 5 - 0 notes