Node JS validation

Node JS validation

本文关键字:validation JS Node      更新时间:2023-09-26

我是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来更好地管理异步调用