أتساءل عما إذا كان من الممكن إجراء استعلامات متداخلة ، حيث تعتمد وسيطات الاستعلام الفرعية على النتيجة الأصلية.
على سبيل المثال استنادًا إلى المستندات المقدمة على سبيل المثال
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 إلى حجة مسار الاستعلام عن الفيلم؟
هذا ممكن @ بادي هاميلتون! باستخدام رمز المثال الخاص بك:
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.
التعليق الأكثر فائدة
هذا ممكن @ بادي هاميلتون! باستخدام رمز المثال الخاص بك:
يتيح لك التوجيه
@export(as: …)
البيانات المحددة مسبقًا لاستخدام استعلامات الراحة المتداخلة الإضافية. مضاعفات صغيرة: تذكر أن كل توجيه@rest
هو على الأرجح طلب شبكة خاصة به ، وبالتالي في هذه الحالة سيكون لديك N + 1 طلبات حيث N هو عدد الأفلام التي يوجد بها Luke.