إنشاء أداة مطابقة أجزاء GraphQL — Numio
يبني خريطة possibleTypes من مخطط GraphQL باستخدام @graphql-codegen/fragment-matcher. يُدرج كل interface وunion مع أنواع الكائنات التي تنفّذه أو تنتمي إليه، جاهزةً لـ InMemoryCache في Apollo Client.
ضبط InMemoryCache({ possibleTypes }) كي تتطابق الأجزاء (fragments) على interface أو union بشكل صحيح في Apollo Client 3.
متى تستخدمها
- ضبط InMemoryCache({ possibleTypes }) كي تتطابق الأجزاء (fragments) على interface أو union بشكل صحيح في Apollo Client 3.
- إعادة إنشاء خريطة possibleTypes بعد إضافة نوع جديد إلى union دون تشغيل CLI الخاص بـ codegen.
طريقة الاستخدام
- الصق مخططًا يحتوي على تعريفات interface أو union في محرر GraphQL Schema.
- اقرأ كائن possibleTypes المُنشأ؛ الأنواع التي لا تنتمي إلى أي interface أو union لا تظهر.
- احفظه كملف .ts ومرّر possibleTypes من التصدير الافتراضي إلى InMemoryCache.
مخطط GraphQL
interface Node {
id: ID!
}
type User implements Node {
id: ID!
name: String!
}
type Post implements Node {
id: ID!
title: String!
}
union SearchResult = User | Post
type Query {
search(term: String!): [SearchResult!]!
}possibleTypes (TypeScript)
export interface PossibleTypesResultData {
possibleTypes: {
[key: string]: string[]
}
}
const result: PossibleTypesResultData = {
possibleTypes: {
Node: ["User", "Post"],
SearchResult: ["User", "Post"],
},
}
export default resultالتفاصيل والقيود
يُستخدم المخطط فقط؛ لا يوجد محرر Document في هذه الصفحة.
المخرجات بلغة TypeScript: واجهة PossibleTypesResultData، وثابت result مُنمَّط، وتصدير افتراضي.
المخطط الخالي من interface وunion ينتج كائن possibleTypes فارغًا. يجري الإنشاء في Web Worker داخل متصفحك.
FAQ
هل هذا هو تنسيق IntrospectionFragmentMatcher القديم؟
لا. تستخدم المخرجات بنية possibleTypes (اسم النوع الأعلى مرتبط بمصفوفة من أسماء الأنواع الفرعية) المعتمدة في Apollo Client 3، وليس تنسيق نتيجة الاستبطان في Apollo Client 2.
كيف أستخدم المخرجات مع Apollo Client؟
استورد التصدير الافتراضي ومرّر result.possibleTypes إلى new InMemoryCache({ possibleTypes }).