Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Sails.js中的密码确认和外部模型验证大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有一天,我一直在玩Sails.我试图围绕在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中的数据库,我认为这将是非常简单的,但似乎没有那个选项.

你会如何解决这个问题?非常感谢您的帮助!

解决方法

您可以在客户端立即执行一些验证,而无需往返服务器.比较密码和确认密码,以及验证字符串匹配电子邮件正则表达式的事情可以通过客户端javascript完成.

对于检查用户名是否存在等其他内容,您可以使用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,请注明来意。