Apollo-link-rest: وسيطات الاستعلام المتداخلة على أساس نتيجة الاستعلام الأصل

تم إنشاؤها على ٢٣ مارس ٢٠١٨  ·  7تعليقات  ·  مصدر: apollographql/apollo-link-rest

أتساءل عما إذا كان من الممكن إجراء استعلامات متداخلة ، حيث تعتمد وسيطات الاستعلام الفرعية على النتيجة الأصلية.
على سبيل المثال استنادًا إلى المستندات المقدمة على سبيل المثال

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

الأفلام عبارة عن مجموعة من عناوين url.
س هل من الممكن تمرير عنوان url إلى حجة مسار الاستعلام عن الفيلم؟

question❔

التعليق الأكثر فائدة

هذا ممكن @ بادي هاميلتون! باستخدام رمز المثال الخاص بك:

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

يتيح لك التوجيه @export(as: …) البيانات المحددة مسبقًا لاستخدام استعلامات الراحة المتداخلة الإضافية. مضاعفات صغيرة: تذكر أن كل توجيه @rest هو على الأرجح طلب شبكة خاصة به ، وبالتالي في هذه الحالة سيكون لديك N + 1 طلبات حيث N هو عدد الأفلام التي يوجد بها Luke.

ال 7 كومينتر

هذا ممكن @ بادي هاميلتون! باستخدام رمز المثال الخاص بك:

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

يتيح لك التوجيه @export(as: …) البيانات المحددة مسبقًا لاستخدام استعلامات الراحة المتداخلة الإضافية. مضاعفات صغيرة: تذكر أن كل توجيه @rest هو على الأرجح طلب شبكة خاصة به ، وبالتالي في هذه الحالة سيكون لديك N + 1 طلبات حيث N هو عدد الأفلام التي يوجد بها Luke.

قد تجد أيضًا pathBuilder مفيدًا ، الوثائق موجودة في ملف tests/restLink.ts حاليًا.

الأفلام هي مجموعة من عناوين url ، وهي ليست كائنًا يحتوي على خاصية url.

هل يمكنك تعديل هذا المثال؟
https://codesandbox.io/s/yw2766yl4x

fbartho شكرًا على الشرح

أعتقد أن الحاجة إلى استخدام طريقة الطلب المتداخلة هذه في هذا المثال ترجع إلى بنية واجهة برمجة التطبيقات ، لذلك سأضطر فقط لقبول طلبات الشبكة المتعددة إذا كنت أرغب في الحصول على هذه البيانات. لكن شكرًا ، سيكون مفيدًا في هيكلة قاعدة البيانات الخاصة بي وواجهة برمجة التطبيقات.

تضمين التغريدة

لقد كنت أبحث عن المزيد من الوثائق حول التوجيه @export ولكني وجدت هذا المثال فقط ، والذي ذكرتهpeggyrayzis في هذه المشكلة . يذكر Peggy أيضًا أنه لا يزال في المرحلة التجريبية ولم يتم إصداره رسميًا. أنا أتطلع لاستخدامها في مشروع أعمل عليه ، لكنني سأشعر براحة أكبر إذا كانت ميزة رسمية مدعومة ، ما هي خريطة الطريق لـ @match ، هل سيتم إصدارها قريبًا؟

@ Paddy-Hamilton ، نحن بالتأكيد ندعم التوجيه @export(as: ضمن استعلامات @rest( المتداخلة. تعد تفاعلات Apollo-link-rest المختلطة و apollo-link-state ميزة رائعة حقًا ، لكنني أعتقد أنه يجب مناقشتها على مستوى رابط أبولو. / ccpeggyrayzis هل لديك أي فكرة هنا؟

أنا غير مألوف بالنسبة للتوجيه @match لذا أحب أي مؤشرات حول المكان الذي تمت مناقشة ذلك فيه.

لم يتم حل هذه المشكلة بالنسبة لي ، يرجى إلقاء نظرة على https://codesandbox.io/s/6yv8y2z9v3

سيتم تحميل عنوان 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/

المشكلة هي أن الأفلام عبارة عن مجموعة. لا أعتقد أن هذا يمكن حله عن طريق pathBuilder.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات