【问题标题】:Validate request parameters in SailsJS在 SailsJS 中验证请求参数
【发布时间】:2014-11-27 10:00:34
【问题描述】:

在 SailsJS 中,我想使用与执行模型操作时验证模型时相同的机制来验证请求参数。

因此,当您定义模型时,您可以使用“属性”选项来指定参数属性,然后将它们用于验证。

但是,如果您想在服务器端验证登录表单或电子邮件表单,因此不需要模型,而您只想验证参数怎么办?

所以我希望能够做这样的事情:

//login validation
req.validate({
   email: { required: true, email: true },
   password: { required: true }
});

//send email validation
req.validate({
   subject: { required: true, type: 'string' },
   to: { required: true, type: 'string' },
   body: { required: true, type: 'string' }
});

一个函数req.validate 混合在所有请求中,如果为请求设置了req.options.usage,则调用它,我已经玩了一点,但我不太明白它在做什么。没有这方面的文档,也没有用于验证的"anchor"

关于如何实现这一点的任何帮助或建议(最好使用一些未记录的 SailsJS 功能)?

【问题讨论】:

    标签: javascript validation sails.js


    【解决方案1】:

    Sails req.validate() 用于 Sails 的核心,如果你想在控制器中使用它,你必须使用 try catch:

    try{
        req.validate({
            email: { type: 'string' },
            password: { type: 'string' }
         });
    }catch(err){
         return res.send(400, err);
    }
    

    或者它也可以设置 req.flash 错误...查看此文件了解更多详细信息:

    https://github.com/balderdashy/sails/blob/045fc6630fd915dce1abd89844e4164a9276a8cd/lib/hooks/request/validate.js

    我正在自己实现这个方法,新功能是在 v0.11 中使用 npm 安装钩子,migration guide:

    https://github.com/Josebaseba/sails-hook-validator

    它仍在开发中,但我认为它会在sails 0.11到来时准备就绪。

    【讨论】:

      【解决方案2】:

      根据sailsjs 文档Model Validations

      注意事项 这是 Model.validate({ attributes }, cb) 如果您 .save() 没有首先验证,Waterline 会尝试转换。如果它 不能,会报错。在这种情况下,它会转换 字符串'Marie,Hank'的数组将没有参数 回调,除非有错误。没有消息就是好消息。这是 一个实例方法。目前,实例方法不是事务性的。 因此,建议您使用等效模型 方法来代替。

      yourLoginModel.validate(req.body, function(err) {
          console.log(JSON.stringify(err));
      });
      

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多