Apollo-link-rest: 新しい{args.id}スタイルの問題

作成日 2018年07月16日  ·  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

全てのコメント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呼び出します。

私はこれを私の2番目の当面の最優先事項と考えていますが、私は職場で火事と戦っているので、午後までそれに到達しません。 一般的に、皆さんが提供できるあらゆる支援に感謝します。#apollo-link-restルームのApolloGraphQLスラックで私を見つけることができます。

本当に役立つ/修正をスピードアップする1つのことは、使用している各ケースの単体テストのコードです。これにより、今後も確実に機能するようになります。

v0.4.1で修正済み: https

@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 評価