Apollo-link-rest: Masalah dengan gaya {args.id} baru

Dibuat pada 16 Jul 2018  ·  5Komentar  ·  Sumber: apollographql/apollo-link-rest

Hai,

Baru saja memperbarui perpustakaan dan mengalami masalah peningkatan. Tanpa perubahan apa pun, fungsionalitas berfungsi seperti yang diharapkan dengan peringatan untuk bermigrasi ke gaya baru. Ketika saya membuat perubahan yang diperlukan seperti di bawah ini, saya mendapatkan bahwa {args} dan {args.name} tidak terdefinisi. Berikut kodenya:

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

Apakah saya melewatkan sesuatu?

blocking bug 🐛 has-reproduction

Komentar yang paling membantu

Diperbaiki di v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Beri tahu saya jika Anda masih melihatnya!

Semua 5 komentar

Masalah yang sama. Baru saja tidak terdefinisi menggunakan gaya {args.id} baru.

Tangkapan yang bagus @karensg @haipengz -- Ini adalah prioritas utama bagi saya, tetapi saya terganggu kemarin sebelum dapat menguji sepenuhnya perubahan ini.

@karensg Meskipun sintaks Anda seharusnya berfungsi (dan ini adalah bug yang tidak berfungsi), saya bermaksud agar api digunakan sedikit berbeda.
Alih-alih: path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
Saya bermaksud untuk menjadi: path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} atau {args.query.deeper} mengambil objek yang ditunjuk oleh jalur kunci, dan kemudian mengubahnya menjadi string kueri. Jadi &{args} dalam situasi Anda akan menjadi { name: "foo" } menjadi &name=foo mana foo secara otomatis mendapatkan encodeURIComponent dipanggil di atasnya.

Saya menganggap ini sebagai prioritas utama kedua saya, tetapi saya sedang memadamkan api di tempat kerja, jadi saya tidak akan melakukannya sampai sore hari. Secara umum, saya menghargai bantuan apa pun yang dapat Anda berikan, Anda dapat menemukan saya di slack ApolloGraphQL di #apollo-link-rest room.

Satu hal yang akan sangat berguna/mempercepat perbaikan saya adalah beberapa kode untuk pengujian unit untuk setiap kasing yang Anda gunakan, jadi saya dapat memastikan itu berfungsi untuk Anda di masa mendatang.

Diperbaiki di v0.4.1: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 Beri tahu saya jika Anda masih melihatnya!

@fbartho Terima kasih atas perbaikannya! Sekarang berfungsi untuk kasus penggunaan saya.

Terima kasih lagi!
Setelah ditingkatkan ke v0.4.1, gaya {args.id} baru sekarang berfungsi untuk kasus saya, tidak lagi tidak terdefinisi.

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat