2015-05-29 26 views
9

Bir işlem kancasının içindeki bir hatayı nasıl döndürürsünüz?Strongloop: İşlem Kancası başarısız olursa bir hatayı nasıl döndürürsünüz?

Kullanım örneği, yeni bir model örneğini kaydettikten sonra bir itme bildirimi gönderiyor.

'after save' etkinliğini gözlemledim, itmeyi gönderin. Bu sebepten dolayı başarısız olursa, 500 response kodunu göndermek istiyorum. Bunu nasıl yaparım?

ctx nesnesinin aslında içinde bulunduğu ya da bulunduğu ile ilgili belgeleri bulamıyorum.

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(); 
}); 

Ben bu satırlar boyunca bir şey inanmak size

+1

ctx nesnesini 'console.log (ctx)' ile denetleyebilirsiniz. İstek ve ilişkili verileri temsil eden bağlam nesnesidir (örneğin, ctx.instance, örneğin Müşteri örneğinizdir). İşlem kancaları aracılığıyla hataları iletmek için, hatayı kancadaki son satır olan 'next (error); Ama bu benim anlayışımın bittiği yer - bunun nerede bittiğinden veya merkezi bir yerde nasıl ele alınacağından emin değilim. – Brian

+0

Hatalı bir şekilde hataları atmak için assert modülünü kullanabilirsiniz. –

cevap

9

ederiz: Henüz yorum ekleyemezsiniz olarak

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

, önceki cevabı genişletme.

Sen ile hata yanıta fazla bilgi sağlayabilir:

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

neyi içerdiğinin ctx ilişkin ayrıntılı belgeler vardır: gibi

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

Bu şey dönecektir. Loopback after-save operation hook docs'da bulunabilir.

ctx nesnesi, kaydedilen model örneğini döndüren instance yöntemine sahiptir. Sen şöyle modeli örneği kontrol ettikten sonra hatayı döndürebilir:

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) 
} 

belgeleri yukarıdaki after save kanca için ctx nesnenin özelliklerini kapsar.