2017-01-25 11 views
10

के साथ त्रुटियों को कैसे संभालें Igraphql-server-express और apollo-client के साथ अपोलो स्टैक का उपयोग कर रहा हूं।अपोलो स्टैक

क्योंकि मेरा बैकएंड सही त्रुटियां नहीं दिखाई दे सकता है और इसलिए मुझे उस पथ के लिए एक त्रुटि के अनुरोध का जवाब देना होगा।

अभी तक मेरी मुख्य समस्या प्रमाणीकरण थी और इसलिए मैंने एक त्रुटि का जवाब दिया।

return new Error(`${data.status}: ${data.statusText} @ ${data.url}`) 

फ्रंटेंड में मैं डेटा क्वेरी करने के लिए अपोलो-क्लाइंट का उपयोग करता हूं।

return apollo 
     .query({query: gql` 
      query { 
       ${query} 
      }`, 
      forceFetch: forceFetch 
     }) 
     .then(result => { debugger; return result.data }) 
     .catch(error => { debugger; console.error(error); }); 

लेकिन यदि क्वेरी की एक संपत्ति किसी त्रुटि के साथ प्रतिक्रिया देती है, तो केवल पकड़ समारोह लागू किया जाएगा। यहां तक ​​कि शेष गुणों का डेटा स्थानांतरित किया गया है, मैं इसे क्रोम देव उपकरण के नेटवर्क टैब में देखता हूं। कैच फ़ंक्शन में त्रुटि ऑब्जेक्ट नहीं है।

मेरा प्रयास GraphiQL के साथ ठीक काम करता है जहां मुझे एक ही ऑब्जेक्ट में त्रुटियां और डेटा मिलता है।

तो मैं पूरे अनुरोध को खोए बिना संपत्ति के लिए त्रुटियों को कैसे फेंक सकता हूं?

उत्तर

0

आप अपने वचन के then में result.error मैन्युअल रूप से देख सकते हैं और catch के उपयोग से बचें। मुझे लगता है कि आप इस विशिष्ट मामले को संभालने के लिए catch कॉल के बाद then भी जोड़ सकते हैं।

इसके अलावा, आप अपने ग्राफक्लु सर्वर में मैन्युअल रूप से फ़िल्टर और प्रारूपित करने के लिए formatError का भी उपयोग कर सकते हैं। उस समारोह का शरीर निम्नलिखित है, और आपके पास Error फेंकने की पहुंच है।

formatError: (error) => { 
    return { 
    name: error.name, 
    mensaje: error.message 
    } 
} 
संबंधित मुद्दे