2015-05-29 6 views
9

कैसे आप एक ऑपरेशन हुक के अंदर एक त्रुटि वापसी करते हैं?स्ट्रॉन्ग्लोप: ऑपरेशन हुक विफल होने पर आप एक त्रुटि कैसे वापस कर सकते हैं?

उपयोग मामला एक नया मॉडल उदाहरण बचाने के बाद एक पुश सूचना भेज रहा है।

मैं 'after save' घटना का निरीक्षण, धक्का भेजें। यदि यह किसी भी कारण से विफल रहता है, तो मैं 500 response कोड भेजना चाहता हूं। मैं उसको कैसे करू?

मैं क्या ctx वस्तु वास्तव में है या शामिल करने के लिए के रूप में दस्तावेज़ प्राप्त करने में असमर्थ हूँ।

Customer.observe('after save', function(ctx, next) { 

    //model saved, but sending push failed for whatever reason, and I want to now send a 500 error back to the user 
    //how? what's inside ctx? how do you send back a response? 
    next(); 
}); 

धन्यवाद

+1

आप एक 'console.log (ctx)' साथ ctx वस्तु निरीक्षण कर सकते हैं। यह संदर्भ वस्तु है जो अनुरोध और संबंधित डेटा का प्रतिनिधित्व करती है (उदाहरण के लिए, 'ctx.instance' आपका ग्राहक उदाहरण है)। ऑपरेशन हुक के माध्यम से त्रुटियों को पारित करने के लिए, 'हुक (त्रुटि);' के माध्यम से त्रुटि को अपने हुक में अंतिम पंक्ति के रूप में पास करें। लेकिन यही वह जगह है जहां मेरी समझ समाप्त होती है- मुझे यकीन नहीं है कि यह कहां समाप्त होता है या इसे केंद्रीय स्थान पर कैसे संभाला जाए। – Brian

+0

आप साफ तरीके से त्रुटियों को फेंकने के लिए जोर मॉड्यूल का उपयोग कर सकते हैं। –

उत्तर

9

मेरा मानना ​​है कि यह इन पंक्तियों के साथ कुछ:

var error = new Error(); 
error.status = 500; 
next(error); 
8

, पिछले जवाब का विस्तार के रूप में मैं टिप्पणी नहीं अभी तक नहीं जोड़ सकते।

आप के साथ त्रुटि जवाबी कार्रवाई के लिए और अधिक जानकारी प्रदान कर सकते हैं:

var error = new Error(); 
error.status = 401; 
error.message = 'Authorization Required'; 
error.code = 'AUTHORIZATION_REQUIRED'; 

यह कुछ वापस आ जाएगी की तरह:

{ 
    "error": { 
     "name": "Error", 
     "status": 401, 
     "message": "Authorization Required", 
     "code": "AUTHORIZATION_REQUIRED", 
     "stack": "Error: Authorization Required\n at ..." 
    } 
} 
0

क्या ctx वास्तव में शामिल किए गए विस्तृत दस्तावेज़ों नहीं है। यह Loopback after-save operation hook docs में पाया जा सकता है।

ctx वस्तु instance विधि है जो कि बचा लिया गया था मॉडल उदाहरण देता है। तुम इतनी तरह मॉडल उदाहरण की जाँच के बाद त्रुटि वापस कर सकते हैं:

if (ctx.instance) { 
    // check if your push operation modified the instance 
    // If condition is not met, throw the error 
    var error = new Error() 
    error.status = 500 
    error.message = '...' 
    next(error) 
} 

प्रलेखन ऊपर after save हुक के लिए ctx ऑब्जेक्ट के गुणों को शामिल किया गया।

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