2015-11-30 8 views
5

ग्राफ़क्यूएल में, मैं एक जियोजेसन ऑब्जेक्ट प्रकार बनाने की कोशिश कर रहा हूं।ग्राफ़क्यूएल में, मैं फ़ील्ड प्रकार के रूप में नेस्टेड सरणी कैसे निर्दिष्ट कर सकता हूं?

जब मैं GraphQLFloat रों की एक 4-आयामी सरणी निर्दिष्ट करते हैं, मैं जब मैं अपने सर्वर प्रारंभ कोई त्रुटि मिलती है:

Error: Decorated type deeper than introspection query. 

प्रकार परिभाषा इस तरह दिखता है:

var GraphQLGeoJSON = new GraphQLObjectType({ 
    name: 'GeoJSON', 
    fields: { 
    type: { 
     type: GraphQLString, 
     resolve: (obj) => obj.type, 
    }, 
    coordinates: { 
     type: new GraphQLList(new GraphQLList(new GraphQLList(new GraphQLList(GraphQLFloat)))), 
     resolve: (obj) => obj.coordinates, 
    } 
    } 
}); 

मैं कैसे कर सकते हैं इस त्रुटि को हल करें? यह जहां यह स्रोत में फेंक दिया जाता है:

https://github.com/graphql/graphql-js/blob/568dc52a4f9cc9bdec4f9283e6e528970af06cde/src/utilities/buildClientSchema.js#L105

उत्तर

6

हम एक वस्तु प्रकार के बजाय एक GeoJSON अदिश प्रकार परिभाषित करने समाप्त हो गया। यह हमें GeoJSON spec के खिलाफ सख्त सत्यापन करने की अनुमति देगा। ...

var GeoJSON = new GraphQLScalarType({ 
    name: 'GeoJSON', 
    serialize: (value) => { 
     // console.log('serialize value', value); 
     return value; 
    }, 
    parseValue: (value) => { 
     // console.log('parseValue value', value); 
     return value; 
    }, 
    parseLiteral: (ast) => { 
     // console.log('parseLiteral ast', ast); 
     return ast.value; 
    } 
}); 

जो हमें इस तरह इसका इस्तेमाल करने की अनुमति देता है::

var Geometry = new GraphQLObjectType({ 
    name: 'Geometry', 
    fields:() => ({ 
     id: globalIdField('Geometry'), 
     geojson: { 
      type: GeoJSON, 
     }, 
    }, 
}; 

आप कर सकते थे अभी के लिए, बस हमें आगे बढ़ रखने के लिए, हम एक (पूरी तरह से लागू नहीं किया गया) कस्टम GeoJSON प्रकार परिभाषित किया है सरणी की सरणी का प्रतिनिधित्व करने के लिए कस्टम प्रकार को परिभाषित करने के लिए इस रणनीति का उपयोग करें, या केवल नेस्टेड सरणी का प्रतिनिधित्व करने के लिए कस्टम प्रकार को परिभाषित करें, और फिर new GraphQLList(CoordinatesType) आदि का उपयोग करें। यह आपके द्वारा मॉडलिंग किए जा रहे डेटा पर निर्भर करता है।

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

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