2016-12-01 14 views
8

को देखते हुए निम्नलिखित अपोलो सर्वर graphql स्कीमा मैं इन अलग मॉड्यूल में टूट तो मैं जड़ क्वेरी स्कीमा के तहत लेखक क्वेरी नहीं करना चाहते .. चाहता था और यह अलग चाहते हैं । मैंने कोशिश की तो मैं रूट क्वेरीअपोलो graphql सर्वर में एक नेस्टेड समाधानकर्ता कैसे बनाएं

type Author { 
    id: Int, 
    firstName: String, 
    lastName: String 
} 
type authorQueries { 
    author(firstName: String, lastName: String): Author 
} 

type Query { 
    authorQueries: authorQueries 
} 

schema { 
    query: Query 
} 

में जोड़ने से पहले एक और परत authorQueries कहा जाता है निम्नलिखित .. आप देख सकते हैं कि authorQueries एक और परत के रूप में लेखक समारोह निर्दिष्ट किया जाता है से पहले जोड़ा गया है।

Query: { 
    authorQueries :{ 
     author (root, args) { 
      return {} 
     } 
    } 
} 

जब Graphiql में क्वेरी करने, मैं यह भी कहा कि अतिरिक्त परत ..

{ 
    authorQueries { 
     author(firstName: "Stephen") { 
      id 
     } 
    } 
} 

मैं निम्नलिखित त्रुटि मिलती है।

"message": "Resolve function for \"Query.authorQueries\" returned undefined",

उत्तर

12

एक "नेस्टेड" समाधानकर्ता बनाने के लिए, बस मूल क्षेत्र की वापसी प्रकार पर समाधानकर्ता परिभाषित करते हैं। इस मामले में, अपने authorQueries फ़ील्ड प्रकार authorQueries देता है, इसलिए आप वहां समाधानकर्ता रख सकते हैं: तकनीकी अर्थ में तो

{ 
    Query: { authorQueries:() => ({}) }, 
    authorQueries: { 
    author(root, args) { 
     return "Hello, world!"; 
    } 
    } 
} 

, वहाँ एक नेस्टेड समाधानकर्ता जैसी कोई चीज नहीं है - हर ऑब्जेक्ट प्रकार एक फ्लैट सूची है खेतों में, और उन क्षेत्रों में वापसी के प्रकार हैं। ग्राफ़क्यूएल क्वेरी का घोंसला नतीजा है जो परिणाम घोंसला करता है।

+0

क्या कोई बेहतर तरीका नहीं है, जैसे लेखक प्रकार के लिए एक रिज़ॉल्वर को परिभाषित करना, जो अतिदेय रूट पैरामीटर के कुछ मानों का उपयोग करता है? जब मैं ऐसा करता हूं तो मैंने हर बार एक अन्य प्रकार के लिए एक रिचार्जर बनाया है, एक अन्य प्रकार – user7776232

+0

हां में उपयोग किया जाता है, आपको कम से कम वर्तमान ग्राफिकल कार्यान्वयन में लेखक को लौटने वाले प्रत्येक फ़ील्ड के लिए एक रिज़ॉल्यूशन परिभाषित करने की आवश्यकता होती है। भविष्य में बेहतर हो सकता है। – stubailo

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