2016-09-22 14 views
6

के लिए नेस्टेड क्वेरी मैं अपने ग्राफिक्स स्कीमा भाषा के साथ अपने दोस्त सूची के लिए रिज़ॉल्यूवर कैसे बना सकता हूं? दोस्त सूची में लोगों की एक सरणी है _id।नए ग्राफQL buildSchema

मेरे नए लोगों GraphQL स्कीमा भाषा के साथ टाइप करें:

const schema = buildSchema(` 
 
    type People { 
 
    _id: String 
 
    firstName: String 
 
    lastName: String 
 
    demo: String 
 
    friendList: [People] 
 
    } 
 
    type Query { 
 
    getPeople(_id: String): People 
 
    } 
 
`);

मेरे पुराने लोगों GraphQLObjectType साथ टाइप करें:

:
const PeopleType = new GraphQLObjectType({ 
 
    name: 'People', 
 
    fields:() => ({ 
 
    _id: { 
 
     type: GraphQLString, 
 
    }, 
 
    firstName: { 
 
     type: GraphQLString, 
 
    }, 
 
    lastName: { 
 
     type: GraphQLString, 
 
    }, 
 
    friendList: { 
 
     type: new GraphQLList(PeopleType), 
 
     // pass @friends parentValue 
 
     resolve: ({ friends }) { 
 
     return People.find({ _id: { $in: friends } }).then(res => res); 
 
    }, 
 
    }), 
 
});

मैं इस क्वेरी हासिल करना चाहते हैं

{ 
    people(_id: "ABC123") { 
    firstName 
    lastName 
    friendList { 
     firstName 
     lastName 
    } 
    } 
+0

क्या आपको कभी इसका जवाब मिला? अभी इस के माध्यम से संघर्ष कर रहा हूँ। –

उत्तर

3

मुझे ग्राफक्ल-जेएस के साथ ऐसा करने का कोई तरीका नहीं मिला, इसलिए मैंने अपोलो में लोगों से ग्राफिक-टूल्स नामक समान कार्यान्वयन के लिए स्विच किया।

http://dev.apollodata.com/tools/graphql-tools/generate-schema.html

वे एक समारोह makeExecutableSchema कहा जाता है कि एक स्कीमा GraphQL स्कीमा भाषा में लिखे गए लगते हैं और (नेस्टेड) ​​समाधानकर्ता कार्यों के साथ यह जोड़ती है। यह समस्या को हल करता है और वास्तव में आपके कोड को ग्राफ़क्यूएल स्कीमा भाषा का उपयोग करने के साथ एकीकृत करने के लिए बहुत आसान है।

http://dev.apollodata.com/tools/graphql-server/index.html

बाहर चेक डॉक्स और उम्मीद है कि यह आप लचीलापन जटिल कोड लिखने के लिए देता है:

उन्होंने यह भी इस नए स्कीमा व्यक्त-graphql, अपने GraphQL-सर्वर की जगह है कि उजागर करने के लिए एक और नास्तिक उपकरण है ग्राफQL स्कीमा भाषा वाक्यविन्यास का उपयोग कर!

5

आपके रिज़ॉल्यूवर को अद्यतन ग्राफिकल दस्तावेज में वर्णित अनुसार कक्षा का एक नया उदाहरण वापस करना चाहिए: http://graphql.org/graphql-js/object-types/

class People { 
    friendList() {} 
} 
var rootValue = { 
    getPeople: function() { 
    return new People(); 
    } 
} 
+0

ठीक एक त्वरित प्रश्न..क्या होगा अगर दोस्त सूची किसी अन्य प्रकार की है (दोस्तों) दोस्त सूची: दोस्तों। आप उस व्यक्ति वर्ग के भीतर कैसे हल कर सकते हैं। – kweku360

+0

@ kweku360 'दोस्त सूची' एक फ़ील्ड रिज़ॉल्वर का प्रतिनिधित्व करता है। मैं आपको [contextable.js] (https://github.com/xpepermint/contextablejs#graphql-root-resolver) की जांच करने के लिए प्रोत्साहित करता हूं। अब इसे एक ग्राफQL रूट वैल्यू रिज़ॉल्वर के रूप में उपयोग किया जा सकता है। – xpepermint