2017-01-06 21 views
7

मेरे पास कुछ ऑब्जेक्ट प्रकार हैं जिन्हें मैं इनपुट और आउटपुट दोनों के रूप में उपयोग करना चाहता हूं - उदाहरण के लिए एक मुद्रा प्रकार या आरक्षण प्रकार।क्या आप ग्राफिकल प्रकार इनपुट और आउटपुट प्रकार दोनों बना सकते हैं?

मैं अपनी स्कीमा को इनपुट और आउटपुट दोनों का समर्थन करने के लिए कैसे परिभाषित करता हूं - अगर मुझे ऐसा नहीं करना है तो मैं कोड डुप्लिकेट नहीं करना चाहता हूं। मैं मुद्रा और स्थिति enums जैसे चीजों के डुप्लिकेट इनपुट प्रकार नहीं बनाना पसंद करूंगा।

export const ReservationInputType = new InputObjectType({ 
    name: 'Reservation', 
    fields: { 
    hotelId: { type: IntType }, 
    rooms: { type: new List(RoomType) }, 
    totalCost: { type: new NonNull(CurrencyType) }, 
    status: { type: new NonNull(ReservationStatusType) }, 
    }, 
}); 

export const ReservationType = new ObjectType({ 
    name: 'Reservation', 
    fields: { 
    hotelId: { type: IntType }, 
    rooms: { type: new List(RoomType) }, 
    totalCost: { type: new NonNull(CurrencyType) }, 
    status: { type: new NonNull(ReservationStatusType) }, 
    }, 
}); 

उत्तर

6

ग्राफ़क्यूएल स्पेक में, ऑब्जेक्ट्स और इनपुट ऑब्जेक्ट्स अलग-अलग चीजें हैं। the spec for input objects उद्धरण:

फ़ील्ड अपने व्यवहार को कॉन्फ़िगर करने के लिए क्वेरी के साथ गुजरने वाले तर्कों को परिभाषित कर सकते हैं। ये इनपुट स्ट्रिंग्स या एनम्स हो सकते हैं, लेकिन उन्हें कभी-कभी इससे अधिक जटिल होने की आवश्यकता होती है।

ऑब्जेक्ट प्रकार ... पुन: उपयोग के लिए अनुचित है, क्योंकि ऑब्जेक्ट्स में ऐसे क्षेत्र हो सकते हैं जो परिपत्र संदर्भ या अंतरफलक और यूनियनों के संदर्भ व्यक्त करते हैं, जिनमें से कोई भी इनपुट तर्क के रूप में उपयोग के लिए उपयुक्त नहीं है। इस कारण से, इनपुट ऑब्जेक्ट्स में सिस्टम में एक अलग प्रकार है।

एक इनपुट ऑब्जेक्ट इनपुट फ़ील्ड के सेट को परिभाषित करता है; इनपुट फ़ील्ड या तो स्केलर, एनम्स, या अन्य इनपुट ऑब्जेक्ट्स हैं। यह तर्कसंगत जटिल structs स्वीकार करने के लिए तर्क की अनुमति देता है।

एक कार्यान्वयन एक वस्तु और एक ही परिभाषा से एक इसी इनपुट वस्तु बनाने के लिए सुविधा कोड प्रदान कर सकते हैं, कवर के तहत, कल्पना इंगित करता है कि वे अलग बातें होने के लिए (होगा जैसे अलग नामों के साथ Reservation और ReservationInput)।

+0

कहां कहा गया है कि प्रकार और इनपुट के लिए अलग-अलग नामों के बारे में? – 4F2E4A2E

+0

@ 4F2E4A2E: ठीक है, मैंने उद्धृत विनिर्देश का खंड इस (ऑब्जेक्ट बनाम इनपुट ऑब्जेक्ट) को कवर किया है। – CommonsWare

+0

@ 4F2E4A2E: "दोनों नामों को एक ही नाम से रखना संभव है लेकिन विभिन्न प्रकारों के साथ, सही?" - मेरे ज्ञान का सबसे अच्छा नहीं। अधिकांश प्रोग्रामिंग भाषाओं में प्रतीकों को अद्वितीय होना चाहिए। – CommonsWare

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