ग्राफकॉल - रिज़ॉल्वर

रिज़ॉल्वर फ़ंक्शंस का एक संग्रह है जो एक ग्राफ़कॉक क्वेरी के लिए प्रतिक्रिया उत्पन्न करता है। सरल शब्दों में, एक रिज़ॉल्वर एक ग्राफक्यूएल क्वेरी हैंडलर के रूप में कार्य करता है। ग्राफोलिका स्कीमा में प्रत्येक रिज़ॉल्वर फ़ंक्शन नीचे दिए गए अनुसार चार स्थितीय तर्क स्वीकार करता है -

fieldName:(root, args, context, info) => { result }

रिज़ॉल्वर फ़ंक्शंस का एक उदाहरण नीचे दिखाया गया है -

//resolver function  with no parameters and returning string
greeting:() => {
   return "hello from  TutorialsPoint !!!"
}

//resolver function with no parameters and returning list
students:() => db.students.list()

//resolver function with arguments and returning object
studentById:(root,args,context,info) => {
   return db.students.get(args.id);
}

नीचे दिए गए स्थितिगत तर्क और उनका विवरण दिया गया है -

अनु क्रमांक। तर्क और विवरण
1

root

वह ऑब्जेक्ट जिसमें परिणाम मूल पेरोल पर रिज़ॉल्वर से वापस आ जाता है।

2

args

क्वेरी में फ़ील्ड में दिए गए तर्कों के साथ एक ऑब्जेक्ट।

3

context

यह एक विशेष क्वेरी में सभी रिज़ॉल्वर द्वारा साझा की गई एक वस्तु है।

4

info

इसमें फ़ील्ड नाम, रूट से फ़ील्ड के लिए पथ सहित क्वेरी की निष्पादन स्थिति के बारे में जानकारी है।

रिज़ॉल्वर परिणाम प्रारूप

ग्राफ़कॉल में रिज़ॉल्वर विभिन्न प्रकार के मान लौटा सकते हैं जैसे नीचे दिए गए हैं -

अनु क्रमांक। तर्क और विवरण
1

null or undefined

यह इंगित करता है कि वस्तु नहीं मिली

2

array

यह केवल तभी मान्य है जब स्कीमा इंगित करता है कि किसी फ़ील्ड का परिणाम एक सूची होना चाहिए

3

promise

रिज़ॉल्वर अक्सर अतुल्यकालिक क्रियाएं करते हैं जैसे डेटाबेस या बैकएंड एपीआई से प्राप्त करना, ताकि वे वादे वापस कर सकें

4

scalar or object

एक रिज़ॉल्वर अन्य मान भी लौटा सकता है

चित्रण

हमें रिज़ॉल्वर को समझने के लिए एक सरल एप्लिकेशन बनाएं। यह सर्वर से आईडी द्वारा किसी छात्र को क्वेरी करने के लिए स्कीमा बनाएगा। छात्र डेटा को एक फ्लैट फ़ाइल में संग्रहीत किया जाएगा और हम एक नोड मॉड्यूल का उपयोग करेंगे जिसे कहा जाता हैnotarealdb एक डेटाबेस नकली और फ्लैट फ़ाइल से पढ़ने के लिए।

एक सरल अनुप्रयोग बनाने के लिए निम्नलिखित चरण-वार प्रक्रिया है -

चरण 1 - परियोजना के लिए आवश्यक निर्भरताएँ डाउनलोड और स्थापित करें

नाम का फोल्डर बनाएं resolver-app। अपनी निर्देशिका को बदलेंresolver-appटर्मिनल से। बाद में, पर्यावरण सेटअप अध्याय में चरण 3 से 5 का पालन करें।

चरण 2 - एक स्कीमा बनाएं

प्रोजेक्ट फ़ोल्डर रिज़ॉल्वर-ऐप में स्कीमा.ग्राफिकल फ़ाइल जोड़ें और निम्न कोड जोड़ें -

type Query { 
   greeting:String
   students:[Student]
   studentById(id:ID!):Student 
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   password:String
   collegeId:String
}

स्कीमा फ़ाइल से पता चलता है कि उपयोगकर्ता के लिए क्वेरी कर सकते हैं ग्रीटिंग, छात्रों और studentById । विशिष्ट आईडी वाले छात्रों को पुनः प्राप्त करने के लिए, हम उपयोग करते हैंdata type ID!जो एक गैर अशक्त अद्वितीय पहचानकर्ता क्षेत्र दिखाता है। छात्रों क्षेत्र के छात्रों की एक सरणी देता है, और ग्रीटिंग रिटर्न एक सरल स्ट्रिंग मान।

चरण 3 - रिज़ॉल्वर बनाएं

एक फ़ाइल बनाएँ resolvers.js प्रोजेक्ट फ़ोल्डर में और निम्न कोड जोड़ें -

const db = require('./db')
const Query = {
   //resolver function for greeting
   greeting:() => {
      return "hello from  TutorialsPoint !!!"
   },
   
   //resolver function for students returns list
   students:() => db.students.list(),

   //resolver function for studentbyId
   studentById:(root,args,context,info) => {
      //args will contain parameter passed in query
      return db.students.get(args.id);
   }
}
module.exports = {Query}

यहाँ, विद्यार्थी बीएड तीन मापदंडों में लेता है। जैसा कि इस अध्याय में चर्चा की गई है, छात्र आईडी को आर्ग से पुनर्प्राप्त किया जा सकता है; रूट में क्वेरी ऑब्जेक्ट स्वयं होगा। एक विशिष्ट छात्र को वापस करने के लिए, हमें छात्रों के संग्रह में आईडी पैरामीटर के साथ विधि प्राप्त करने की आवश्यकता है।

यहाँ ग्रीटिंग, स्टूडेंट्स, स्टूडेंटबाय, रिज़ॉल्वर हैं जो क्वेरी को हैंडल करते हैं।students resolver functionडेटा एक्सेस लेयर से छात्रों की सूची लौटाता है। मॉड्यूल के बाहर रिसॉल्वर फ़ंक्शंस तक पहुंचने के लिए, मॉड्यूल ऑब्जेक्ट का उपयोग करके निर्यात किया जाना चाहिए।

चरण 4 - एप्लिकेशन को चलाएं

एक server.js फ़ाइल बनाएँ। पर्यावरण सेटअप अध्याय में चरण 8 देखें। टर्मिनल में कमांड npm शुरू करें। सर्वर 9000 पोर्ट पर अप और रनिंग होगा। यहां, हम अनुप्रयोग का परीक्षण करने के लिए एक ग्राहक के रूप में ग्राफीक्यूएल का उपयोग करते हैं।

ब्राउज़र खोलें और url डालें, http://localhost:9000/graphiql। संपादक में निम्नलिखित प्रश्न टाइप करें -

{  
   studentById(id:"S1001") {
      id
      firstName
      lastName
   }
}

उपरोक्त क्वेरी के लिए आउटपुट नीचे दिखाया गया है -

{
   "data": {
      "studentById": {
         "id": "S1001",
         "firstName": "Mohtashim",
         "lastName": "Mohammad"
      }
   }
}