我在我的Web应用程序中使用Sails js。我必须更改beforeCreate的默认行为。首先看一下代码:

beforeCreate: function(values, next) {

    //ParamsCheck is my service and 'check' is method which will validate the
    //parameters and if any invalid parameter then error will be thrown, otherwise
    //no error will be thrown

    ParamsCheck.check(values)
   .then(() => {
     // All Params are valid and no error
     next();
   })
   .catch((err) => {
     //Some errors in params, and error is thrown
     next(err);
   });
}


因此,问题是如果有任何错误,则下一个方法将自动重定向到错误代码为500的serverError,而我想使用自定义响应(例如badRequest,错误代码400)将其重定向。如何实现呢?

最佳答案

您正在beforeCreate中执行某种验证。但是,这不是验证的正确位置。

更好的方法是使用http://sailsjs.org/documentation/concepts/models-and-orm/validations#?custom-validation-rules中所述的自定义验证规则,或创建一个策略来处理验证。

我喜欢使用政策:

module.exports = function(req, res, next) {
    var values = req.body;
    ParamsCheck.check(values).then(() => {
     return next();
   }).catch((err) => {
     return res.send(422); // entity could not be processed
   });
};

关于node.js - 航行js beforeCreate next()回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39911458/

10-10 05:34