2014-10-10 20 views
0

我想用406響應,當用戶試圖設置他們的密碼長度少於8個字符。我正在模型上的beforeCreate函數中進行此驗證。但是Sails迴應了一個500和一個Internal Server Error消息。無論如何要訪問響應對象並用我自己的迴應做出迴應?如何在beforeCreate函數中發送響應?

module.exports = { 
    beforeCreate: function (attrs, next) { 
    if (attrs.password.length < PASS_MIN_LENGTH) { 
     return next({status: 406, message: "Password must be at least 8 characters"}); 
    } 
    next(); 
    }, 
... // Model definition below 
}; 

回答

0

這取決於您是否使用藍圖?出現錯誤時,您可以將響應設置爲調用模型的控制器中的任何內容。如果你使用藍圖,那麼你需要編輯它們以適應你的需求。 (在/ api中創建藍圖文件夾並在那裏複製藍圖,確保小寫findOne.js,並且可以根據需要進行修改)

但是您應該知道有驗證的地方。

對於本示例,您可以在模型上放置minLength屬性。

https://github.com/balderdashy/waterline-docs/blob/master/models.md#validations

或者,您可以創建自定義的驗證也是如此。如果您使用beforeCreate回調函數,因爲PASS_MIN_LENGTH是您想要使用的變量,那麼您也可以在驗證中使用它。