2017-12-22 124 views
11

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

app.use('/graphql', graphqlHTTP((request,res) => { 
const startTime = Date.now(); 
return { 
    schema: remoteSchema 
    graphiql: false, 
    extensions({ document, variables, operationName, result }) { 
    return { 
     // here I am not getting extensions which I have on my another server as below. 
     console.log(res); // this does not have additional info and response headers 
     console.log(result); // this only has response against the query 
    } 
    }; 
})); 

मैं परिणाम में क्वेरी का परिणाम हो रही है लेकिन प्रतिक्रिया हेडर और अतिरिक्त जानकारी जो एक्सटेंशन का एक हिस्सा है जो मैं अपने अन्य सर्वर जहां रिसोल्वर देखते हैं पर जोड़ा जा रहा है नहीं मिल रहा है।

{ 
    "data": { 
     "records": { 
      "record": [{ 
        "id": 1, 
       }, 
       { 
        "id": 2, 
       } 
      ], 
     }, 
     "additionalInfo": {} 
    }, 
    "extensions": { 
     "info": {} 
    } 
} 

समस्या क्या हो सकती है? इस प्रकार मैं एक्सटेंशन में अपने अन्य सर्वर पर प्रतिक्रिया शीर्षलेख और अतिरिक्त जानकारी जोड़ रहा हूं। मैं नीचे कोड डीबग करता हूं जहां एक्सटेंशन डेटा उपलब्ध है। यह मिडलवेयर सर्वर पर नहीं जा रहा है।

extensions({ document, variables, operationName, result }) { 
    result.data.additionalInfo = res.additionalInfo; 
    // extension to write api headers in response 
    var headerObj = {}; 
    res.apiHeaders.forEach(element => { 
    merge(headerObj, element); 
    }); 
    result.headerObj = headerObj; 
    return { 
     information: headerObj 
    }; 
} 

मेरा आवेदन प्रवाह यह है कि मैं मिडलवेयर मार्ग को कॉल कर रहा हूं, फिर रिमोट स्कीमा सिलाई का उपयोग कर एक अन्य सर्वर मार्ग। मैं विस्तार चाहता हूं जो मैं किसी अन्य सर्वर पर जोड़ रहा हूं, प्रतिक्रिया में मेरे मिडलवेयर सर्वर के लिए आगे होना चाहिए।

उत्तर

2

क्या आप console.log() अनुरोध करते हैं? मुझे यकीन है कि आप जो हेडर आउटपुट करना चाहते हैं, उसके बारे में एक्सटेंशन फ़ंक्शन में जो भी हो, वह अनुरोध में होगा, क्योंकि यह सर्वर पर मिडलवेयर है, प्रतिक्रिया कुछ ऐसा है जिसे आप अगले फ़ंक्शन पर भेजने से पहले संशोधित करने जा रहे हैं या वापस ग्राहक के लिए।

extensions({ document, variables, operationName, result }) { 
    // console.log the request object to check the header information from the request. 
    console.log(request); 
    return { 
     // This will fill the information key with all the headers in the request. 
     information: reaquest.header 
    }; 
} 
+0

':' और '=>' आवश्यक नहीं हैं। मूल उदाहरण कोड विधि परिभाषाओं के लिए ऑब्जेक्ट शाब्दिक शॉर्टैंड का उपयोग कर रहा है। – aaronjkrause

+0

@Aaronjkrause मैं बस उस दस्तावेज में भाग गया, यह इंगित करने के लिए धन्यवाद। – RickyM

+0

@RickyM मुझे अनुरोध दिखाई देता है लेकिन 'apiHeaders: [], अतिरिक्त जानकारी: {},' वहां खाली हैं। –

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