Apollo-link-rest: Problema con el nuevo estilo {args.id}

Creado en 16 jul. 2018  ·  5Comentarios  ·  Fuente: apollographql/apollo-link-rest

Hola,

Acabo de actualizar la biblioteca y tengo problemas para actualizar. Sin ningún cambio, la funcionalidad funciona como se esperaba con una advertencia para migrar al nuevo estilo. Cuando hago los cambios necesarios como a continuación, obtengo que tanto {args} como {args.name} no están definidos. Aquí está el 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 } });

¿Me estoy perdiendo de algo?

blocking bug 🐛 has-reproduction

Comentario más útil

Corregido en v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 ¡ Por favor, avíseme si todavía lo está viendo!

Todos 5 comentarios

Mismo problema. Se acaba de definir con el nuevo estilo {args.id}.

Gran captura @karensg @haipengz : esta es una prioridad clave para mí, pero ayer me interrumpieron antes de poder probar completamente estos cambios.

@karensg Si bien su sintaxis debería funcionar (y es un error que no lo haga), tenía la intención de que la API se usara de manera ligeramente diferente.
En lugar de: path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
Tenía la intención de que fuera: path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} o {args.query.deeper} toma el objeto al que apunta la ruta de la clave y luego lo convierte en una cadena de consulta. Entonces &{args} en su situación sería { name: "foo" } convierte en &name=foo donde foo obtiene automáticamente encodeURIComponent llamado.

Considero que esta es mi segunda prioridad máxima inmediata, pero estoy combatiendo incendios en el trabajo, así que no lo haré hasta la tarde. En general, agradezco cualquier ayuda que puedan brindarme, pueden encontrarme en ApolloGraphQL slack en la # apollo-link-rest room.

Una cosa que sería realmente útil / acelerar mi solución sería algún código para pruebas unitarias para cada caso que esté usando, así puedo asegurarme de que funcione para usted en el futuro.

Corregido en v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 ¡ Por favor, avíseme si todavía lo está viendo!

@fbartho ¡ Gracias por las correcciones! Ahora funciona para mi caso de uso.

¡Gracias de nuevo!
Después de actualizar a la v0.4.1, el nuevo estilo {args.id} ahora funciona para mi caso, ya no está 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>
...

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