में एररलाइजिंग त्रुटि को संभालने में मैंने हाल ही में एक एक्सप्रेस.जेएस आधारित एप्लिकेशन पर काम करना शुरू किया, जो पीजी मॉड्यूल (https://github.com/brianc/node-postgres)एक्सप्रेस.जेएस-आधारित ऐप
का भी उपयोग करता हैमैंने भी काफी समय बिताया, नोड और एक्सप्रेस दृष्टिकोण त्रुटि प्रबंधन, सही तरीके से डिजाइन करने के फायदे मिडलवेयर इत्यादि के बारे में पढ़ना, फिर भी, एक आवर्ती समस्या अभी भी समाधान के बिना मुझे परेशान कर रही है।
app.get("/:someThing/:someId", function(req, res, next) {
pgClient.query("some SQL query", function(err, data) {
if (err) { return next(err); } // some 500 handler will take it
if (data.rows.length == 0) {
next(); // send it over to a 404 handler
}
//finally, here we get the chance to do something with the data.
//and send it over via res.json or something else
});
});
मैं सही ढंग से पढ़ा है, तो यह यह करने के लिए उचित तरीके से किया जाना चाहिए:
कहो, मैं निम्नलिखित रूटर विधि है। फिर भी, मैं शर्त लगाता हूं कि आप यह भी स्वीकार कर सकते हैं कि बॉयलरप्लेट का बहुत अधिक बार-बार लिखना है ... और फिर भी, उसी राउटर विधि में भी, यदि हमारे पास कई नेस्टेड कॉलबैक हैं।
मैं खुद से पूछ रहा हूं कि इस तरह की स्थिति को केंद्रीय रूप से संभालने का सबसे अच्छा तरीका क्या होगा। मेरे सभी विचारों में pgClient.query विधि को अवरुद्ध करना शामिल है। एक में, क्वेरी विधि कॉलबैक पर पास करने के बजाय त्रुटि को फेंक देगी। दूसरे में, pgClient.query पर कॉल राउटर विधि को pgClient के बगल में भेज देगा। फिर अवरुद्ध क्वेरी विधि को पता चलेगा कि अगली बीत जाने के साथ कैसे निपटें।
जो मुझे पता है, उससे त्रुटियों को फेंकना वास्तव में 500 हैंडलर तक पहुंचने का उचित तरीका नहीं है। दूसरी तरफ, पीजी क्लाइंट के विकल्प के रूप में पासिन, उपरोक्त परतों के बारे में बहुत कम स्तर प्रदान करता है, जो मेरे ज्ञान और अनुभव के आधार पर युग्मन का कारण बन सकता है, और यह भी बहुत अच्छा नहीं है।
आप क्या सुझाव देते हैं?
'/: कुछ /: someId'? –
हां, मैंने इसे – user1219569
नहीं बदला, मैंने सभी 500 अनुरोधों के लिए एक मार्ग के बारे में सोचा। –