回调函数执行两次nodejs

时间:2016-07-12 07:41:32

标签: javascript node.js mongodb

大家好,我有另一个问题,当用户注册时,我收到了以下错误

exports.signUp = function(req, res) {
    query = req.body;
    var userData = [];
    for (var key in query) {
        userData.push(query[key]);
    }
    user.registerValidate(query, function(bool) {
        if (bool) {
            bcrypt.hash(query.pword, null, null, function(err, hash) {
                query.pword = hash;
                user.createUser(query, function(bool2) {
                    if (bool2) {
                        res.send("User created");
                    } else {
                        res.send("Problem Occured");
                    }
                });

            });

        } else {
            res.send("USER IS NOT VALID");
        }
    });

}

在调试之后,我发现执行两次的registervalidate函数运行两次..并且两次验证细节......在第一次执行时它发送响应...在第二次执行时它没有找到回调作为函数

登录向上



exports.registerValidate = function(data, callback) {


    // this.loginValidate(userData[0], function(data) {
    //     if (data != null) {
    //         isValid = false;
    //     } else
    //     if (!util.validateMobile(userData[2])) {
    //         isValid = false;
    //     } else
    //     if (!util.validateEmail(userData[1])) {
    //         isValid = false;
    //     }
    //     callback(isValid);

    // });
    var User = require("../Models/UserSchema").model('User');
    User.findOne({
        uname: data.uname
    }, function(err, query) {
        var isValid = true;
        if (err) throw console.log(err);
        if (query != null) {
            isValid = false;
            callback(isValid);
        } else
        if (!util.validateMobile(data.mobile_no)) {
            isValid = false;
            callback(isValid);
            return;
        } else
        if (!util.validateEmail(data.email)) {
            isValid = false;
            callback(isValid);
            return;
        } else {
            callback(isValid);
            return;
        }

    });

}




它使用它进行验证,它运行了两次..



{{1}}




起初我认为loginValidate导致问题...所以我评论了它.. 请问是什么问题

0 个答案:

没有答案