Kısa bir süre önce pg modülünü (https://github.com/brianc/node-postgres) kullanan bir Express.js tabanlı uygulama üzerinde çalışmaya başladım.Express.js tabanlı bir uygulamada hata işlemeyi merkezileştirme
Ayrıca önemli bir zaman harcadım, düğüm ve ifade yaklaşımı hata işleme hakkında okuma, ara katman yazılımını düzgün bir şekilde tasarlama avantajları vs. gibi. Yine de, yinelenen bir sorun hala bir çözüm olmadan beni rahatsız ediyor. Ben doğru okuduysanız
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
});
});
, bunu yapmak için uygun yolu olmalıdır:
Demek, aşağıdaki yönlendirici yöntemi var. Yine de bahse girerim ki, birden fazla iç içe geçmiş geri çağırma söz konusu olduğunda, aynı yönlendirici yönteminde bile tekrar tekrar yazmanın ve tekrar tekrar yazmanın çok fazla olduğunu kabul edebilirsin.
Böyle bir durumu ele almanın en iyi yolunun merkezi olarak ne olacağını kendime sordum. Tüm fikirlerim pgClient.query yöntemini engellemeyi içerir. Birinde, sorgulama yöntemi basitçe, geri çağrıya iletmek yerine hatayı atacaktır. Bir diğerinde, pgClient.query'ye yapılan çağrı, yönlendirici yöntemini pgClient'in yanına gönderir. Sonra, yakalanan sorgulama yöntemi, bir sonraki iletimle nasıl başa çıkılacağını bilir.
Bildiğim kadarıyla, etrafta hata atmak gerçekten 500 işleyiciye ulaşmanın uygun yolu değil. Diğer taraftan, pgClient seçeneğinin yanı sıra pasif, bilgi ve deneyimime dayanan, üstte yer alan katmanlar hakkında bu kadar düşük düzeyde çok fazla bilgi birikimine neden olur ve bu da çok iyi değildir.
Önerileriniz nelerdir?
'/: Something /: someId'? –
evet, değiştirdim – user1219569
Hayır, tüm 500 istekleri için bir rota düşündüm. –