やあ、
ライブラリを更新したばかりで、アップグレードに問題があります。 変更を加えることなく、機能は期待どおりに機能し、新しいスタイルに移行するよう警告が表示されます。 以下のように必要な変更を加えると、{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 } });
私は何かが足りませんか?
同じ問題。 新しい{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>
...
最も参考になるコメント
v0.4.1で修正済み: https :