2016-10-21 11 views
6

मैं निम्नलिखित परिभाषित करना चाहते हैं प्रश्नोंक्या ग्राफक्लु फ़ील्ड तर्कों में पारित होने के आधार पर बहुरूपता का समर्थन करते हैं?

{ 
// return all individuals 
individuals { 
    id 
    } 
} 

// return ONE individual by id 
individuals(id:"123") { 
    id 
    } 
} 

ध्यान दें कि क्वेरी नाम एक ही है, केवल पैरामीटर भिन्न है।

आज, मुझे मिला एकमात्र कामकाज अलग-अलग क्वेरी नामों को परिभाषित करना है।

मैं पॉलिमॉर्फिक प्रश्नों को कैसे परिभाषित कर सकता हूं? क्या यह भी संभव है?

+1

मुझे यकीन नहीं है कि "क्वेरी नाम" से आपका क्या मतलब है - क्या आप रूट क्वेरी प्रकार पर फ़ील्ड नाम का जिक्र कर रहे हैं? – stubailo

+0

यह यहां बताया गया है http://graphql.org/learn/queries/ उपर्युक्त उदाहरणों में, क्वेरी नाम "व्यक्तियों" –

उत्तर

6

आपके ग्राफ़क्यूएल क्वेरी की जड़ पर उपलब्ध फ़ील्ड को ग्राफ़ क्वेरी स्कीमा में रूट क्वेरी प्रकार के फ़ील्ड के रूप में परिभाषित किया गया है, आमतौर पर केवल Query नाम दिया जाता है। यह प्रकार स्कीमा में किसी भी अन्य ग्राफक्ल्यू ऑब्जेक्ट प्रकार के समान है। तो इस प्रश्न को

क्या ग्राफ़क्लुएल फ़ील्ड में पास किए गए तर्कों या तर्क प्रकारों के आधार पर विभिन्न परिणामों को वापस करने की क्षमता है?

संक्षिप्त उत्तर "नहीं" है। ग्राफ़क्यूएल की एक महत्वपूर्ण संपत्ति यह है कि एक विशेष क्षेत्र हमेशा एक ही प्रकार को वापस करना चाहिए; इसका अर्थ यह है कि एक फ़ील्ड जो एक सरणी लौटाता है, हमेशा एक सरणी लौटाता है, और एक फ़ील्ड जो किसी ऑब्जेक्ट प्रकार को लौटाता है, हमेशा उस विशेष प्रकार को वापस लौटाता है, भले ही दिए गए तर्कों के बावजूद

हालांकि, कुछ तरीके हैं जो आप कर सकते हैं कई अलग-अलग नामित फ़ील्ड बनाने की आवश्यकता से बचने के लिए समान परिणाम प्राप्त करें:

  1. ग्राफ़कुल फ़ील्ड में वैकल्पिक तर्क हो सकते हैं। उदाहरण के लिए यदि आप एक क्षेत्र individuals कहा जाता है, तो आप वैकल्पिक तर्क उदाहरण के लिए, फिल्टर के विभिन्न प्रकार की आपूर्ति करने के लिए उपयोग कर सकते हैं: individuals(search: "Dan") या individuals(status: "admin"), या individuals (कोई तर्क के साथ) या individuals(status: "admin", search: "Dan") (दोनों एक ही बार में प्रदान किए गए तर्कों
  2. GraphQL। फ़ील्ड कई ऑब्जेक्ट प्रकारों का एक संघ वापस कर सकते हैं। इसलिए यदि आपका क्षेत्र कई अलग-अलग प्रकार की चीजें वापस कर सकता है, तो आप एक यूनियन का उपयोग कर सकते हैं। यह खोज में उदाहरण के उदाहरण में प्रदर्शित होता है: http://graphql.org/learn/schema/#union-types दुर्भाग्य से यह यहां लागू नहीं होता है क्योंकि आप यहां से आवेदन नहीं कर सकते ऑब्जेक्ट प्रकार के साथ सरणी का एक संघ नहीं है।

कई मामलों में, आपको कई फ़ील्ड बनाने की आवश्यकता होगी क्योंकि Gra phQL में वर्तमान में विधि अधिभार या बहुरूपता नहीं है।

+0

'id' द्वारा किसी आइटम के लिए, मैं' 1' की सरणी वापस कर रहा हूं, बिना ' आईडी', 'एन' की एक सरणी। अच्छी तरह से काम करने लगता है। – Jazzy

संबंधित मुद्दे

 संबंधित मुद्दे