Apollo-link-rest: Проблема с новым стилем {args.id}

Созданный на 16 июл. 2018  ·  5Комментарии  ·  Источник: apollographql/apollo-link-rest

Привет,

Только что обновили библиотеку и возникли проблемы с обновлением. Без каких-либо изменений функциональность работает должным образом с предупреждением о переходе на новый стиль. Когда я вношу необходимые изменения, как показано ниже, я получаю, что и {args}, и {args.name} не определены. Вот код:

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

Я что-то упускаю?

blocking bug 🐛 has-reproduction

Самый полезный комментарий

Исправлено в v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Пожалуйста, дайте мне знать, если вы все еще видите это!

Все 5 Комментарий

Та же проблема. Только что получил неопределенное значение с использованием нового стиля {args.id}.

Отличный улов @karensg @haipengz - это ключевой приоритет для меня, но вчера меня прервали, прежде чем я смог полностью протестировать эти изменения.

@karensg Хотя ваш синтаксис должен работать (а это ошибка, в которой нет), я намеревался использовать api несколько иначе.
Вместо: path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
Я рассчитывал, что это будет: path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} или {args.query.deeper} берет объект, на который указывает путь ключа, а затем превращает его в строку запроса. Итак, &{args} в вашей ситуации будет { name: "foo" } становится &name=foo где foo автоматически вызывает encodeURIComponent .

Я считаю это своей второй приоритетной задачей, но я тушу пожары на работе, поэтому не займусь этим до полудня. В общем, я ценю любую помощь, которую вы можете оказать, вы можете найти меня в Slack ApolloGraphQL в комнате # apollo-link-rest.

Одна вещь, которая была бы действительно полезной / ускорила бы мое исправление, - это некоторый код для модульных тестов для каждого случая, который вы используете, поэтому я могу убедиться, что он работает для вас в будущем.

Исправлено в v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Пожалуйста, дайте мне знать, если вы все еще видите это!

@fbartho Спасибо за исправления! Теперь он работает для моего варианта использования.

Спасибо еще раз!
После обновления до v0.4.1 новый стиль {args.id} теперь работает в моем случае, больше не определен.

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

kevinrobayna picture kevinrobayna  ·  6Комментарии

i-Hun picture i-Hun  ·  4Комментарии

dphaener picture dphaener  ·  5Комментарии

sinisterra picture sinisterra  ·  6Комментарии

Daniel-Griffiths picture Daniel-Griffiths  ·  5Комментарии