Apollo-link-rest: مشكلة في نمط {args.id} الجديد

تم إنشاؤها على ١٦ يوليو ٢٠١٨  ·  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} الجديد.

التقاط رائع @ karensghaipengz - هذه أولوية رئيسية بالنسبة لي ، لكن تمت مقاطعتك بالأمس قبل أن أتمكن من اختبار هذه التغييرات بالكامل.

karensg بينما يجب أن يعمل بناء الجملة الخاص بك (وهو خطأ لا يحدث) ، كنت أنوي استخدام واجهة برمجة التطبيقات بشكل مختلف قليلاً.
بدلاً من: 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 عليه.

أعتبر هذا ثاني أهم أولوياتي ، لكني أحارب الحرائق في العمل ، لذا لن أصل إليها إلا بعد الظهر. بشكل عام ، أقدر أي مساعدة يمكن أن تقدمها يا رفاق ، يمكنك أن تجدني في فترة الركود 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 التقييمات