React اور Hasura کے ساتھ GraphQL میں JSONB فلٹرنگ کا مسئلہ حل کرنا
ریئل ٹائم ایپلی کیشنز میں ڈیٹا کو فلٹر کرنا ہموار محسوس کر سکتا ہے—جب تک کہ یہ اچانک ٹوٹ نہ جائے، خاص طور پر گراف کیو ایل میں JSONB فیلڈز جیسی پیچیدہ اقسام کے ساتھ۔ یہ چیلنج اکثر حسورا اور رد عمل کا استعمال کرتے وقت ظاہر ہوتا ہے، جہاں JSONB فلٹرنگ حسورا کنسول پر کام کرتی ہے لیکن ایپلیکیشن میں غیر متوقع غلطیاں ڈالتی ہے۔
اس منظر نامے میں، ہم GraphQL کا استعمال کرتے ہوئے ایک React ایپلیکیشن میں کلائنٹس کو فلٹر کرنا چاہتے ہیں، خاص طور پر ان کی حیثیت کی بنیاد پر "Ativo" (فعال) یا "Inativo" (غیر فعال)۔ مقصد کلائنٹس کو فلٹر کرنے کے لیے حسورا میں JSONB فیلڈ ClientePayload کا استعمال کرنا ہے، جس طرح یہ کنسول میں کامیابی کے ساتھ فلٹر کرتا ہے۔ تاہم، React میں، اس نقطہ نظر کے نتیجے میں رن ٹائم غلطی ہوتی ہے، جو ڈویلپرز کے لیے ایک عام مایوسی ہے۔
یہ خرابی، "نحو کی خرابی: متوقع نام، اسٹرنگ 'Situacao' پایا،" اس غلط ترتیب کی طرف اشارہ کرتا ہے کہ حسورا GraphQL استفسار بمقابلہ React اجزاء کی ساخت کی تشریح کیسے کرتا ہے۔ چاہے آپ ڈیش بورڈ بنا رہے ہوں یا کلائنٹ مینجمنٹ ٹول، اس فلٹرنگ کے مسئلے کو حل کرنا درست ڈیٹا ڈسپلے کے لیے ضروری ہے۔🛠️
آئیے اس بات پر غور کریں کہ React میں یہ خرابی کیوں ظاہر ہوتی ہے، یہاں تک کہ جب حسورا میں سب کچھ آسانی سے کام کرتا ہے، اور اسے حل کرنے کا طریقہ دریافت کریں تاکہ آپ اپنی ایپ میں JSONB فیلڈز کو قابل اعتماد طریقے سے فلٹر کر سکیں۔ 🌐
حکم | استعمال کی مثال |
---|---|
useDashboardStore | یہ کسٹم ہک ڈیش بورڈ کے لیے اسٹیٹ اور ایکشنز کا نظم کرتا ہے، جس سے ماڈیولر اسٹیٹ مینجمنٹ اور React ایپ میں اجزاء کے فلٹرز کو آسان اپ ڈیٹس مل سکتے ہیں۔ |
useForm | "react-hook-form" لائبریری سے استعمال کیا جاتا ہے، یہ غلطیوں، قدروں، اور جمع کرانے کی ہینڈلنگ جیسی فارم کی حالتوں کو شروع اور منظم کرتا ہے۔ یہ متحرک طور پر صارف کے انتخاب کو کیپچر کرنے اور کلائنٹس کو حقیقی وقت میں فلٹر کرنے کے لیے بہت اہم ہے۔ |
handleSubmit | "useForm" کا ایک فنکشن جو فارم جمع کرنے کو ہینڈل کرتا ہے فیلڈز کی توثیق کرکے اور فارم ڈیٹا کو onSubmit فنکشن میں منتقل کرتا ہے، React کے ساتھ مزید محفوظ ڈیٹا جمع کرنے کو فعال کرتا ہے۔ |
Controller | ری ایکٹ ہک فارم کے کنٹرول کے اندر اپنی مرضی کے ان پٹ فیلڈز کو لپیٹنے کے لیے استعمال کیا جاتا ہے، "کنٹرولر" فارم کی حالت سے کنکشن برقرار رکھنے، فارم میں اسٹیٹس فلٹرنگ کے لیے منتخب ان پٹس کو منظم کرنے میں مدد کرتا ہے۔ |
setFilters | یوز ڈیش بورڈ اسٹور سے ایک ایکشن فنکشن، "سیٹ فلٹرز" فلٹر کی حالت کو صارف کی منتخب کردہ اقدار کے ساتھ اپ ڈیٹ کرتا ہے۔ یہ کمانڈ ڈیش بورڈ کے منظر میں فلٹرز کی متحرک اور ہموار اپ ڈیٹ کرنے کی اجازت دیتی ہے۔ |
Object.entries | ایک آبجیکٹ کو کلیدی قدر کے جوڑوں کی ایک صف میں تبدیل کرتا ہے، جسے پھر صرف درست فیلڈز شامل کرنے کے لیے کم کر دیا جاتا ہے۔ یہ غیر خالی ان پٹس کو فلٹر کرکے JSONB ڈیٹا کی جانچ اور اپ ڈیٹ کو آسان بناتا ہے۔ |
_contains | حسورا اور گراف کیو ایل میں ایک مخصوص فلٹر آپریٹر JSONB فیلڈز کو فلٹر کرنے کے لیے استعمال ہوتا ہے۔ JSON راستوں کی وضاحت کر کے، "_contains" نیسٹڈ پراپرٹیز جیسے "Situacao" کی بنیاد پر مماثل ریکارڈ کی شناخت کرتا ہے۔ |
gql | ایک ٹیگ شدہ ٹیمپلیٹ فنکشن جو گراف کیو ایل کے سوالات کی وضاحت کرنے کے لیے استعمال ہوتا ہے، حسورا اور گراف کیو ایل کلائنٹس کے ساتھ متحرک سوالات کو فعال کرتا ہے، اور کلائنٹس کو اسٹیٹس کے لحاظ سے فلٹر کرنے کے لیے استفسار کے سیٹ اپ کو آسان بناتا ہے۔ |
useQuery | Apollo کلائنٹ کی طرف سے ایک React ہک جو GraphQL استفسار بھیجتا ہے اور استفسار کی حیثیت کو ٹریک کرتا ہے۔ فلٹر شدہ کلائنٹ ڈیٹا کو لانے اور استفسار کی غلطیوں کا نظم کرنے کے لیے مثال میں یہ ضروری ہے۔ |
حسورا اور رد عمل کے ساتھ JSONB فلٹرنگ کی تلاش: حل اور اسکرپٹ
اوپر دیے گئے اسکرپٹس میں گراف کیو ایل کے ساتھ JSONB فلٹرنگ کے چیلنج سے نمٹا گیا ہے۔ رد عمل ہسورہ کا استعمال کرتے ہوئے ایپلیکیشن، ایک عام غلطی کو دور کرتے ہوئے جو نیسٹڈ JSON فیلڈز کو فلٹر کرنے کی کوشش کرتے وقت پیدا ہوتی ہے۔ خاص طور پر، غلطی "ان ہینڈلڈ رن ٹائم ایرر GraphQLError: Syntax Error: Expected Name, found String 'Situacao'" اکثر JSONB فلٹرز لگاتے وقت ظاہر ہوتی ہے، جو GraphQL کے لیے ایک غیر متوقع ان پٹ فارمیٹ کی نشاندہی کرتی ہے۔ پہلے حل میں، فارم کا ڈیٹا اکٹھا کیا جاتا ہے، تصدیق کی جاتی ہے، اور استعمال کرتے ہوئے بیک اینڈ پر بھیجی جاتی ہے۔ فارم استعمال کریں۔ اور کنٹرولر React Hook Form سے، جہاں "clientesFiltro" اسٹیٹس فیلڈ کو متحرک طور پر ڈراپ ڈاؤن کے طور پر پیش کیا جاتا ہے۔ یہ سیٹ اپ لچکدار حیثیت کے انتخاب کی اجازت دیتا ہے، اس کو بیک اینڈ پر بھیجنے سے پہلے "ClientePayload" فلٹر میں درست ساخت کو یقینی بناتا ہے۔
ایک اور کلیدی نقطہ نظر GraphQL استفسار کو ماڈیولرائز کرنے میں مضمر ہے۔ دوسرے حل میں، ہم استعمال کرتے ہیں جی کیو ایل GraphQL استفسار کی وضاحت کرنے کے لیے، پیرامیٹرائزڈ اسٹیٹس کو متغیر کے طور پر سیٹ کرنا۔ پھر، استفسار کا استعمال کریں۔ اپالو کلائنٹ سے استفسار پر عمل درآمد کرنا آسان بناتا ہے جبکہ UI کے لیے لوڈنگ اور ایرر سٹیٹس کو بھی سنبھالتا ہے۔ پیرامیٹرائزیشن پر انحصار کرتے ہوئے، یہ حل ہارڈ کوڈنگ اقدار سے گریز کرتا ہے، اور اسے مختلف اسٹیٹس ویلیوز جیسے "Ativo" اور "Inativo" کے لیے دوبارہ قابل استعمال بناتا ہے۔ جب کوئی استفسار ناکام ہوجاتا ہے تو یہ حل ممکنہ غلطیوں کو خوش اسلوبی سے ہینڈل کرتا ہے اور صارفین کو ریئل ٹائم فیڈ بیک پیش کرتا ہے۔
دی ڈیش بورڈ اسٹور کا استعمال کریں۔ ہک تمام حلوں میں مرکزی طریقے سے فلٹرز کو منظم کرنے اور اپ ڈیٹ کرنے کے لیے ضروری ہے، جس سے ریاست کو تمام اجزاء میں قابل رسائی اور یکساں بنایا جائے۔ یہ ماڈیولریٹی دوبارہ استعمال میں مدد دیتی ہے اور دیکھ بھال کو آسان بناتی ہے۔ مثال کے طور پر، سیٹ فلٹرز استعمال میں ڈیش بورڈ اسٹور ڈویلپرز کو فلٹرز کو منتخب طور پر اپ ڈیٹ کرنے کی اجازت دیتا ہے، موثر اسٹیٹ اپ ڈیٹس اور کلینر ری ایکٹ اجزاء کی ساخت کو فعال کرتا ہے۔ ہم بھی استعمال کرتے ہیں۔ Object.entries فارم کے اعداد و شمار پر اعادہ کرنا اور غیر خالی اقدار کو ہینڈل کرنا، دستی ان پٹ چیک کے بغیر پے لوڈ تیار کرنے کا ایک کمپیکٹ طریقہ۔
ہر حل میں یونٹ ٹیسٹ شامل کر کے، ڈویلپر فلٹر منطق کی وشوسنییتا کی تصدیق کر سکتے ہیں اور کسی غیر متوقع نتائج کی نشاندہی کر سکتے ہیں۔ یہ ٹیسٹ اس بات کو یقینی بنانے کے لیے ضروری ہیں کہ گراف کیو ایل کے استفسار پر عمل درآمد ہو جیسا کہ صارف کے مختلف ان پٹ اور سسٹم سٹیٹس میں توقع کی جاتی ہے۔ ریئل ٹائم فیڈ بیک، ماڈیولر سٹیٹ ہینڈلنگ، اور تفصیلی ایرر مینجمنٹ کے ساتھ، یہ طریقے حسورا اور ری ایکٹ میں JSONB فلٹرنگ کے مسائل سے مؤثر طریقے سے نمٹتے ہیں، جس سے ایک متحرک اور غلطی سے پاک کلائنٹ مینجمنٹ کا تجربہ ہوتا ہے۔ ⚙️
حل 1: گراف کیو ایل اور حسورا کے ساتھ رد عمل میں JSONB فلٹرنگ کی خرابی کو ہینڈل کرنا
نقطہ نظر 1: رد عمل میں بہتر خرابی سے نمٹنے اور ان پٹ کی توثیق کا استعمال
import React from 'react';
import { useDashboardStore } from '../stores/dashboardStore';
import { useForm, Controller } from 'react-hook-form';
export function ChargeStageDashboard() {
const { actions: { setFilters }, state: { filters } } = useDashboardStore();
const { handleSubmit, control } = useForm();
const onSubmit = (formData) => {
const { clientesFiltro } = formData;
const selectedStatus = clientesFiltro?.metadata || null;
if (!selectedStatus) {
console.warn('No valid status selected');
return;
}
const updatedFilters = {
...filters.charges,
where: {
...filters.charges.where,
ClientePayload: { _contains: { Situacao: selectedStatus } }
}
};
setFilters({ charges: updatedFilters });
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<Controller
control={control}
name="clientesFiltro"
render={({ field: { onChange, value } }) => (
<select onChange={onChange} value={value}>
<option value="">Select Status</option>
<option value="Ativo">Ativos</option>
<option value="Inativo">Inativos</option>
</select>
)}
/>
<button type="submit">Pesquisar</button>
</form>
);
}
حل 2: گراف کیو ایل سوال اور JSONB فلٹرنگ کے لیے خرابی کو ٹھیک کریں۔
نقطہ نظر 2: خرابی سے نمٹنے کے ساتھ ماڈیولرائزڈ گراف کیو ایل سوال
import gql from 'graphql-tag';
import { useQuery } from '@apollo/client';
const GET_CLIENTS = gql`
query getClients($status: String!) {
inadimplencia_Clientes(where: { ClientePayload: { _contains: { Situacao: $status } } }) {
Cliente_Id
ClientePayload
}
}`;
export function ChargeStageDashboard() {
const { loading, error, data } = useQuery(GET_CLIENTS, {
variables: { status: "Ativo" },
onError: (err) => console.error('Error fetching clients:', err.message)
});
if (loading) return <p>Loading...</p>;
if (error) return <p>Error: {error.message}</p>;
return (
<div>
{data.inadimplencia_Clientes.map(client => (
<p key={client.Cliente_Id}>{client.ClientePayload}</p>
))}
</div>
);
}
حل 3: مشروط منطق اور توثیق کے ساتھ اعلی درجے کی فلٹرنگ
نقطہ نظر 3: بہتر ایرر میسجنگ کے ساتھ رد عمل میں مشروط JSONB فلٹر
import React from 'react';
import { useDashboardStore } from '../stores/dashboardStore';
import { useForm, Controller } from 'react-hook-form';
export function ChargeStageDashboard() {
const { actions: { setFilters }, state: { filters } } = useDashboardStore();
const { handleSubmit, control } = useForm();
const onSubmit = (formData) => {
try {
const selectedStatus = formData?.clientesFiltro?.metadata || null;
if (!selectedStatus) throw new Error("Invalid filter value");
setFilters({
charges: {
...filters.charges,
where: {
...filters.charges.where,
ClientePayload: { _contains: { Situacao: selectedStatus } }
}
}
});
} catch (error) {
console.error("Failed to set filter:", error.message);
}
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<Controller
control={control}
name="clientesFiltro"
render={({ field: { onChange, value } }) => (
<select onChange={onChange} value={value}>
<option value="Ativo">Ativos</option>
<option value="Inativo">Inativos</option>
</select>
)}
/>
<button type="submit">Pesquisar</button>
</form>
);
}
React اور GraphQL میں ایڈوانسڈ JSONB فلٹرنگ کے مسائل کو حل کرنا
جب پیچیدہ ڈیٹا ڈھانچے کو سنبھالنے کی بات آتی ہے، JSONB فیلڈز PostgreSQL جیسے ڈیٹا بیس میں، a کے ساتھ مل کر گراف کیو ایل حسورا کے ذریعے انٹرفیس، ناقابل یقین لچک فراہم کرتا ہے۔ JSONB متحرک کلیدی قدر کے ڈیٹا کو ذخیرہ کرنے کی اجازت دیتا ہے، لیکن اس سے استفسار کرنا چیلنجوں کا باعث بن سکتا ہے، خاص طور پر جاوا اسکرپٹ پر مبنی ایپلی کیشنز جیسے React میں۔ یہاں، JSONB کالم میں نیسٹڈ فیلڈز پر مبنی فلٹرنگ ضروری ہے لیکن گراف کیو ایل میں نحوی رکاوٹوں کی وجہ سے مشکل ہو سکتی ہے، جیسے کہ مناسب حوالہ اور متغیر ہینڈلنگ کی ضرورت۔
ان مسائل کو کم کرنے کے لیے، اکثر مخصوص گراف کیو ایل آپریٹرز جیسے کہ فائدہ اٹھانا ضروری ہوتا ہے۔ _contains، جو جزوی میچ کے ذریعہ نیسٹڈ پراپرٹیز سے استفسار کرنے کی اجازت دیتا ہے۔ یہ آپریٹر خاص طور پر ہماری مثال میں "Situacao" جیسے فیلڈز کے لیے مفید ہے، جو ہمیں کلائنٹس کو اسٹیٹس کے لحاظ سے فلٹر کرنے کی اجازت دیتا ہے۔ تاہم، اگر گراف کیو ایل نحو ایک متغیر کی توقع کرتا ہے، لیکن اس کے بجائے ایک سٹرنگ براہ راست موصول ہوتی ہے، تو ایک خرابی پیدا ہو سکتی ہے، جیسا کہ ہم نے "متوقع نام، پایا سٹرنگ 'Situacao'" کی خرابی کے ساتھ دیکھا۔ اس طرح کے مسائل سے بچنے کے لیے، استفسارات کو احتیاط سے ترتیب دینا، اور رد عمل کی حالت سے فلٹر متغیرات کو متحرک طور پر تفویض کرنا، مطابقت اور درست نتائج کو یقینی بناتا ہے۔
JSONB فلٹرنگ چیلنجوں پر قابو پانے کے لیے ایک اور اہم نقطہ نظر میں ماڈیولر اور دوبارہ قابل استعمال کوڈ ڈھانچے شامل ہیں۔ فلٹرنگ منطق کو ہینڈل کرنے کے لیے سرشار فنکشنز بنا کر اور ہکس کا استعمال کرتے ہوئے فلٹرز ترتیب دے کر useDashboardStore، ہم اس بات کو یقینی بنا سکتے ہیں کہ ایپلیکیشن مؤثر طریقے سے متعدد اجزاء پر فلٹرز کا اطلاق کرتی ہے۔ یہ سیٹ اپ بہتر ریاستی انتظام اور کلینر کوڈ کو قابل بناتا ہے، جو خاص طور پر بڑی ایپلی کیشنز میں مفید ہے۔ اس طرح کے بہترین طریقوں پر عمل کرکے، ہم رن ٹائم کی غلطیوں کو کم سے کم کرتے ہوئے اور مستقبل کے کوڈ کی دیکھ بھال کو آسان بناتے ہوئے JSONB کی پیش کشوں سے زیادہ سے زیادہ فائدہ اٹھا سکتے ہیں۔ 🎯
گراف کیو ایل کے ساتھ JSONB فلٹرنگ پر اکثر پوچھے گئے سوالات
- کیا کرتا ہے _contains ایک GraphQL استفسار میں کرتے ہیں؟
- دی _contains آپریٹر چیک کرتا ہے کہ آیا JSONB فیلڈ میں ایک مخصوص قدر شامل ہے، جو اسے مخصوص کلیدوں کو ملا کر نیسٹڈ JSON ڈیٹا کو فلٹر کرنے کے لیے بہترین بناتا ہے۔
- گراف کیو ایل "نحو کی خرابی: متوقع نام" کی غلطی کیوں پھینکتا ہے؟
- یہ خرابی اس وقت ہوتی ہے جب گراف کیو ایل کو ایک غیر متوقع ڈیٹا کی قسم موصول ہوتی ہے، جیسے کہ ایک سٹرنگ جہاں اسے نام یا متغیر کی توقع ہوتی ہے، جیسا کہ JSONB فلٹرنگ میں "Situacao" فیلڈ کے ساتھ دیکھا گیا ہے۔
- میں حسورا میں JSONB فلٹر کی غلطیوں سے کیسے بچ سکتا ہوں؟
- نیسٹڈ JSON کیز کے لیے متغیرات کا استعمال کرنا اور استفسار میں متحرک طور پر ترتیب دینا، اس کے ساتھ آپریٹرز جیسے _contains اور _has_key، نحو کی عام غلطیوں سے بچنے میں مدد کرتا ہے۔
- کیا حسورا میں JSONB فلٹرنگ SQL استفسار کی طرح ہے؟
- ہاں، حسورا میں JSONB فلٹرنگ SQL جیسے سوالات کی نقل کرنے کے لیے گراف کیو ایل آپریٹرز کا استعمال کرتی ہے۔ تاہم، نیسٹڈ JSON فیلڈز کو سنبھالنے کے لیے اسے مخصوص نحوی ایڈجسٹمنٹ کی ضرورت ہوتی ہے۔
- میں حسورا کے ساتھ گراف کیو ایل میں فلٹرنگ کے مسائل کو کیسے حل کروں؟
- اپنے ڈیٹا بیس میں JSON ڈھانچے کی تصدیق کرکے اور حسورا کے کنسول میں استفسار کی جانچ کرکے شروع کریں۔ React میں ایرر ہینڈلنگ کو لاگو کریں اور چیک کریں کہ آیا نحو یا اقسام درست ہیں۔
- کیوں ہے Object.entries JSONB فلٹرز کے ساتھ رد عمل میں مددگار؟
- Object.entries JSON ڈھانچے میں متحرک طور پر کلیدوں تک رسائی اور فلٹرنگ کو آسان بناتا ہے، بڑی React ایپس میں کوڈ کی پیچیدگی کو کم کرتا ہے۔
- میں یوز ڈیش بورڈ اسٹور کے ساتھ رد عمل میں اپنے فلٹرز کو کیسے اپ ڈیٹ کروں؟
- useDashboardStore ایک حسب ضرورت ہک ہے جو رد عمل میں فلٹر کی حالت کو سنٹرلائز کرتا ہے، جس سے تمام اجزاء میں فالتو پن کے بغیر اپ ڈیٹس کی اجازت ملتی ہے۔
- کیا میں JSONB فلٹرنگ کو سنبھالنے کے لیے گراف کیو ایل متغیرات استعمال کر سکتا ہوں؟
- جی ہاں، گراف کیو ایل متغیرات کی وضاحت نیسٹڈ کیز اور ڈیٹا فلٹرنگ کی متحرک ہینڈلنگ، لچک کو بہتر بنانے اور نحو کی غلطیوں کو کم کرنے کی اجازت دیتی ہے۔
- کا کردار کیا ہے۔ handleSubmit رد عمل کی شکلوں میں؟
- handleSubmit React Hook Form سے فارم ڈیٹا جمع کرانے اور توثیق کا انتظام کرتا ہے، جو فلٹرز کو درست طریقے سے لاگو کرنے کے لیے ضروری ہے۔
- کیا JSONB فیلڈز پیچیدہ ایپلی کیشنز میں ڈیٹا مینجمنٹ کو بہتر بنا سکتے ہیں؟
- بالکل! JSONB فیلڈز لچکدار ڈیٹا ڈھانچے کو فعال کرتی ہیں، جو ایپلی کیشنز کو تیار کرنے کے لیے مثالی ہے جہاں ڈیٹا فیلڈز کلائنٹ کے مخصوص ڈیٹا کی بنیاد پر مختلف ہو سکتے ہیں۔
JSONB فلٹرنگ چیلنجز پر اختتامی خیالات
فلٹرنگ JSONB ڈیٹا حسورا کے ساتھ رد عمل میں گراف کیو ایل کے ذریعے سیدھا ہو سکتا ہے، لیکن سوالات میں JSON فیلڈ ہینڈلنگ کی وجہ سے "متوقع نام، پایا سٹرنگ" جیسی غلطیاں ہو سکتی ہیں۔ ساختی فلٹرنگ تکنیکوں پر عمل کرکے، ڈویلپر ان مسائل پر قابو پا سکتے ہیں۔
دوبارہ استعمال کے قابل اجزاء کی تعمیر اور غلطی سے نمٹنے کا اطلاق موثر فلٹرنگ اور بہتر وشوسنییتا کو یقینی بناتا ہے۔ یہ طرز عمل ڈیٹا کے بہاؤ کو ہموار کرنے میں مدد کریں گے اور اس بات کو یقینی بنائیں گے کہ ایپلی کیشنز میں نیسٹڈ فیلڈز کو بھی صحیح طریقے سے فلٹر کیا گیا ہے۔ 🚀
JSONB فلٹرنگ سلوشنز کے لیے وسائل اور حوالہ جات
- حسورا کے ساتھ JSONB فیلڈز اور گراف کیو ایل کے استفسارات کے بارے میں گہرائی سے رہنمائی: JSONB فلٹرنگ پر حسورا دستاویزات
- فارم کی ریاستوں اور گذارشات کے انتظام کے لیے React ہک فارم کی تفصیلات: ردعمل ہک فارم دستاویزات
- گراف کیو ایل میں نحوی غلطیوں سے نمٹنے کے لیے حل اور بہترین طریقے: GraphQL.org - سوالات اور نحو
- React ایپلی کیشنز میں اپولو کلائنٹ کو لاگو کرنے کے لیے API کا حوالہ: اپالو کلائنٹ کی دستاویزات
- جاوا اسکرپٹ ڈیٹا مینجمنٹ تکنیک پر مزید پڑھنا: MDN - JavaScript گائیڈ