Apollo-link-rest: Argumen kueri bersarang berdasarkan hasil kueri induk

Dibuat pada 23 Mar 2018  ·  7Komentar  ·  Sumber: apollographql/apollo-link-rest

Saya bertanya-tanya apakah mungkin untuk melakukan kueri bersarang, di mana argumen kueri anak didasarkan pada hasil induk.
mis. berdasarkan contoh yang diberikan oleh dokumen

const getLukeRestLink = gql`
  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        film @rest(type: "Film", path:  filmUrl) { // the filmUrl is the url that is returned in the films field
          title
        }
      }
    }
  }
`;

Film adalah rangkaian url.
T Apakah mungkin untuk meneruskan url ke argumen jalur kueri film?

question❔

Komentar yang paling membantu

Ini bisa dilakukan @ Paddy-Hamilton! Menggunakan kode contoh Anda:

  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        url @export(as: "url")
        film @rest(type: "Film", path: ":url") {
          title
        }
      }
    }
  }

Direktif @export(as: …) memungkinkan Anda mengekspos data yang dipilih sebelumnya untuk kueri-sisa bersarang lebih lanjut untuk digunakan. Kerumitan kecil: ingat bahwa setiap @rest direktif mungkin adalah permintaan jaringannya sendiri, jadi dalam hal ini Anda akan memiliki permintaan N + 1 dengan N adalah jumlah film Luke di dalamnya.

Semua 7 komentar

Ini bisa dilakukan @ Paddy-Hamilton! Menggunakan kode contoh Anda:

  query luke {
    Luke @rest(type: "Person", path: "people/1/") {
      name
      films {
        url @export(as: "url")
        film @rest(type: "Film", path: ":url") {
          title
        }
      }
    }
  }

Direktif @export(as: …) memungkinkan Anda mengekspos data yang dipilih sebelumnya untuk kueri-sisa bersarang lebih lanjut untuk digunakan. Kerumitan kecil: ingat bahwa setiap @rest direktif mungkin adalah permintaan jaringannya sendiri, jadi dalam hal ini Anda akan memiliki permintaan N + 1 dengan N adalah jumlah film Luke di dalamnya.

Anda mungkin juga menemukan pathBuilder berguna, dokumentasinya ada di file tests/restLink.ts untuk saat ini.

Film adalah larik url, ini bukan objek yang berisi properti url.

Bisakah Anda mengubah contoh ini?
https://codesandbox.io/s/yw2766yl4x

@fbartho terima kasih atas penjelasan dan tip bonus permintaan jaringan.

Saya pikir kebutuhan untuk menggunakan metode permintaan bersarang ini dalam contoh ini disebabkan oleh struktur api, jadi saya harus menerima beberapa permintaan jaringan jika saya ingin mendapatkan data ini. Tapi terima kasih, akan sangat membantu dalam menyusun database dan api saya sendiri.

@bayu_joo

Saya telah mencari beberapa dokumentasi lagi sekitar @export direktif tetapi hanya benar-benar menemukan contoh ini , yang disebutkan @peggyrayzis dalam masalah ini . Peggy juga menyebut masih dalam tahap percobaan dan belum resmi dirilis. Saya ingin menggunakannya dalam proyek yang sedang saya kerjakan, tetapi akan merasa lebih nyaman jika itu adalah fitur resmi yang didukung, bagaimana peta jalan untuk @match , apakah itu akan segera dirilis?

@ Paddy-Hamilton kami pasti mendukung perintah @export(as: dalam kueri @rest( bertingkat. Interaksi campuran apollo-link-rest & apollo-link-state adalah fitur yang sangat keren, tapi menurut saya perlu dibahas di level apollo-link. / cc @peggyrayzis apakah Anda punya informasi tentang hal ini?

Saya tidak terbiasa dengan petunjuk @match jadi saya ingin petunjuk apa pun tentang di mana hal itu dibahas.

Masalah ini tidak terpecahkan untuk saya, silakan lihat https://codesandbox.io/s/6yv8y2z9v3

Ini akan memuat satu url https://swapi.co/api/https://swapi.co/api/films/2/,https://swapi.co/api/films/6/,https://swapi.co/api/films/3/,https://swapi.co/api/films/1/,https://swapi.co/api/films/7/

Masalahnya adalah bahwa film adalah sebuah array. Saya tidak berpikir ini bisa diselesaikan oleh pathBuilder.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat