res.negotiate()
此方法已過時.
您應該改用自訂回應。
若要處理來自Waterline 模型方法的錯誤,請檢查錯誤的
name
屬性(詳情請參閱 Waterline 錯誤參考)。
給定一個錯誤 (err
),嘗試透過檢查 status
屬性來猜測應該呼叫哪個錯誤回應 (badRequest
、forbidden
、notFound
或 serverError
)。如果 err
不是字典,或 status
屬性與已知的 HTTP 狀態碼不符,則預設為 serverError
。
特別適用於處理來自 Model.create() 或 Model.update() 的潛在驗證錯誤。
return res.negotiate(err);
與其他內建的自訂回應模組一樣,此方法的行為是可自訂的。
res.negotiate()
會檢查提供的錯誤 (err
),並從以下方法之一判斷適當的錯誤處理行為
res.badRequest()
(400)res.forbidden()
(403)res.notFound()
(404)res.serverError()
(500)判斷依據是 err
的 "status" 屬性。如果無法確定更具體的診斷結果(例如,err
沒有 "status" 屬性,或是字串),Sails 將預設為 res.serverError()
。
// Add Fido's birthday to the database:
Pet.update({name: 'fido'})
.set({birthday: new Date('01/01/2010')})
.exec(function (err, fido) {
if (err) return res.negotiate(err);
return res.ok(fido);
});
- 此方法是終端方法,表示它通常是您的應用程式針對給定請求應執行的最後一行程式碼(因此在這些文件中建議使用
return
)。res.negotiate()
(與其他使用者空間回應方法一樣)可以被覆寫 - 只需定義一個回應模組 (/responses/negotiate.js
) 並匯出一個函數定義。- 此方法用作 Sails 中未捕獲錯誤的預設處理程序。這表示如果在任何請求處理程式碼中拋出錯誤,但僅在事件迴圈的初始步驟中,它會自動被呼叫。您應該始終明確地處理可能在來自非同步程式碼的回呼/Promise 中發生的錯誤。
req
)
res
)