Node JS validation
Node JS validation
我是NodeJS的新手,并且已经编写了一个创建新用户的方法,但是我需要验证传递的参数。我正试图确保一封电子邮件不被注册两次。这不起作用,因为它检查在self.emailExists()回调完成之前错误数组是否为空,我如何解决这个问题?
userSchema.statics.buildUser = function(email, name, cb) {
var self = this;
var user = new this();
var errors = [];
if (!validator.isEmail(email)) {
errors.push({
'err': -1,
'msg': 'Invalid email'
});
} else {
self.emailExists(email, function(exists) {
if (exists) {
errors.push({
'err': -1,
'msg': 'Email address is already in use'
});
} else {
user.email = email;
}
});
}
if (!validator.trim(name).length > 0) {
errors.push({
'err': -1,
'msg': 'Invalid name'
});
} else {
user.name = name;
}
if (errors.length != 0) {
cb(errors, null);
} else {
cb(false, user);
}
}
My emailExists方法是:
userSchema.statics.emailExists = function(email, cb) {
var self = this;
self.count({email: email}, function (err, count) {
cb(count > 0);
});
}
您需要重新构建代码以放置错误。在emailExists()回调中检查长度。尝试Async.js和Promises来更好地管理异步调用
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Angular JS validation
- js/jq form validation issue/help(jquery)
- js validation with validator.addMethod
- 无效的限定符.jQuery.validation.js
- Js Validation with int and selectbox
- 使用jQuery进行表单验证(不使用validation.js)
- html5 validation and JS
- Enter需要按两次才能触发,KnockoutJS带有knockout.validation.js
- Durandal JS在页面加载时触发的Knockout Validation与messagesOnModified值无
- Node JS validation
- Angular JS from validation
- Selectize.js and jQuery validation