大佬教程收集整理的这篇文章主要介绍了node.js – Sails.js中的密码确认和外部模型验证,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是场景:
Registration Form: Username: _______________ E-Mail: _______________ password: _______________ Confirm: _______________
用户输入:
期望的结果:
Username: _______________ x Already taken E-Mail: _______________ ✓ password: _______________ ✓ Confirm: _______________ x Does not match
要求,几个关键点:
>用户会收到输入的每个方面的所有错误消息(不仅仅是第一个).它们不含糊不清(“用户名已被占用”或“用户名必须至少4个字母长”优于“无效用户名”)
>内置模型验证显然不负责检查匹配的密码确认(SRp)
我认为我需要做什么:
UserController的:
create: function(req,res) { try { // use a UseRMANager-service to keep the controller nice and thin UseRMANager.create(req.params.all(),function(user) { res.send(user.toJSON()); }); } catch (E) { res.send(E); } }
的UseRMANager:
create: function(input,cb) { UserValidator.validate(input); // this can throw a ValidationException which will then be handled by the controller User.create(input,cb); // this line should only be reached if the UserValidator did not throw an exception }
用户:(型号)
attributes: { username: { type: 'String',required: true,minLength: 3,unique: true },email: { type: 'email',password: { type: 'String',required: true } }
UserValidator:
这是棘手的部分.我需要将输入特定的验证(密码确认匹配吗?)与模型验证(是用户名和电子邮件地址有效吗?)结合起来.
如果有一种方法来实例化用户模型并执行验证而不保存到Sails / Waterline中的数据库,我认为这将是非常简单的,但似乎没有那个选项.
你会如何解决这个问题?非常感谢您的帮助!
对于检查用户名是否存在等其他内容,您可以使用ajax调用sa来直接询问“此用户名是否存在”并根据结果在客户端提供实时验证,或者您可以等待直到用户提交表单并解析表单提交以显示这些验证.由于这样的事情提前检查不是100%可靠(即有人可以在检查后但在回传表格之前创建具有该名称的用户),有些人选择放弃预检,只处理发布后的错误.
Waterline有自己的内置验证机制Anchor,它建立于validator.js(以前称为节点验证器).有关可用验证的完整列表,请参阅here.我建议您定义一种方法来解析sails验证消息,并以一种用户友好且一致的方式对其进行格式化,而不是定义单独的验证层.
如果你想在Waterline为你做的事情之外进行你自己的验证,你可以在lifecycle callback中进行那些验证,例如beforeCreate(值,回调)生命周期回调.如果检测到错误,则可以将它们作为第一个参数传递给回调,并将它们作为错误传递给create collection方法的调用者.
使用生命周期回调的另一种方法是创建自己的处理创建的集合方法.像这样的东西:
Users.validateAndCreate(req.params.all(),function (err,user) { ... });
有关如何创建此类收集方法的更多信息,请参阅我对此问题的回答:How can I write sails function on to use in Controller?
以上是大佬教程为你收集整理的node.js – Sails.js中的密码确认和外部模型验证全部内容,希望文章能够帮你解决node.js – Sails.js中的密码确认和外部模型验证所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。