2017-04-27 14 views
17

मैं अपोलो दस्तावेज़ीकरण की समीक्षा कर रहा हूं लेकिन मुझे अपोलो क्लाइंट में सर्वर त्रुटियों को संभालने के बारे में जानकारी नहीं दिखाई देती है।अपोलो क्लाइंट (प्रतिक्रिया): अप्रत्याशित त्रुटियों को संभालना

उदाहरण के लिए, मान लीजिए कि सर्वर या तो:

  • टाइम्स बाहर
  • नहीं पहुंचा जा सकता
  • अनपेक्षित रूप से विफल रहता है

यह कैसे ग्राहक में संभाला जाना चाहिए हो जाता है? अपोलो वर्तमान में त्रुटियों के साथ विफल रहता है जैसे:

Unhandled (in react-apollo) Error: GraphQL error: Cannot ...

मैं इन त्रुटियों से बचने और इन त्रुटियों को संभालने से बचना चाहता हूं। मैं प्रतिक्रिया अपोलो का उपयोग करके ऐसा कैसे कर सकता हूं?


संदर्भ के लिए:

मैं वर्तमान में प्रतिक्रिया-अपोलो और Redux उपयोग कर रहा हूँ।

उत्तर

6

त्रुटियाँ error क्षेत्र में साथ अपने घटक रंगमंच की सामग्री पर पारित कर रहे हैं: http://dev.apollodata.com/react/api-queries.html#graphql-query-data-error

function MyComponent({ data }) { 
    if (data.error) { 
    return <div>Error!</div>; 
    } else { 
    // ... 
    } 
} 

export default graphql(gql`query { ... }`)(MyComponent); 

यही संदेश छपा है कि अगर हमें पता करने में त्रुटि थी कि और error क्षेत्र घटक में पहुँचा नहीं किया गया था।

आप एक सामान्य तरीके से त्रुटियों को संभालने के लिए एक उच्च-आदेश घटक लिख सकते हैं, ताकि आप इसके साथ अपने सभी घटकों को लपेट सकें।

+0

तरह अपोलो सर्वर द्वारा भेजे गए त्रुटियों के बारे में क्या: proxyConsole। जेएस: 54 त्रुटि: ग्राफQL त्रुटि: [ऑब्जेक्ट ऑब्जेक्ट] नए अपोलोएरर (अपोलोएरर.जेएस: 34) पर QueryManager.js पर: 12 9 पर – stackdave

0

सर्वर त्रुटि का अर्थ यह हो सकता है कि सर्वर से कोई डेटा ऑब्जेक्ट नहीं आ रहा है, इसलिए कोई त्रुटि संदेश भी उपलब्ध नहीं है।

मान लें कि आप कुछ उपयोगकर्ता डेटा पूछते हैं ताकि परिणाम ऑब्जेक्ट data.user होगा। तो फिर तुम परीक्षण करना चाहते हैं:

if (data.loading !== true && data.user === undefined) { 
    /* handle the error here */ 
} 

आपको त्रुटि संदेश को देखने के लिए नहीं करना चाहते हैं, तो आप आपकी क्वेरी के लिए विकल्पों को शामिल कर सकते हैं:

graphql(query, { 
    options: { 
    errorPolicy: 'ignore' 
    } 
}) 
संबंधित मुद्दे