在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功能)?
答案 0 :(得分: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错误...查看此文件以获取更多详细信息:
我已经在我自己的方法实现中使用了在v0.11中使用npm安装挂钩的新功能,migration guide:
https://github.com/Josebaseba/sails-hook-validator
它仍在开发中,但我认为当风帆0.11到达时它会准备好。
答案 1 :(得分:1)
根据sailsjs docs Model Validations。
注 这是 Model.validate({attributes},cb)的简写如果你没有先验证.save(),Waterline会尝试转换。如果它 不会,它会引发错误。在这种情况下,它会转换 数组到字符串' Marie,Hank'没有参数 除非出现错误,否则回调。没有消息就是好消息。这是 实例方法。目前,实例方法不是交易的。 因此,建议您使用等效模型 方法改为。
yourLoginModel.validate(req.body, function(err) {
console.log(JSON.stringify(err));
});