节点js变量在分配有效数据后保存先前调用的数据

时间:2016-01-31 03:10:54

标签: android node.js mongodb mongoose android-volley

编辑:问题在于validator.trim()函数。一旦我删除了修剪功能,代码就可以正常工作。

这个问题我很难解释。我正在运行一个带有mongodb(mongoose集成)的节点服务器和通过volley进行的android请求。

有时,当我发送一个说明注册模块的请求时,基本信息(电子邮件,密码,名称),从请求正文分配的变量将更改为先前请求的数据。因此,数据存在并且来自post参数是正确的,我只是无法将数据从它分配给新变量。如果我这样做,新变量将保存来自下面的验证模块的'number'的值。

Ex.
...
var user_email = req.body.email;
...
console.log(user_email); // 7145557777
console.log(req.body.email);//test@email.com

编辑:

无论范围如何,变量都是随机的。可能是什么导致了这个?重新启动服务器会暂时解决问题,但在一次注册后再次发生这种情况。

在我的路线中定义为:

...
app.post('/register',function (req,res){
auth.register(req,res);
});
...

注册模块

var register = function(req,res) {
    var user_email    = validator.trim(req.body.email);
    var user_password = validator.trim(req.body.pass);
    var user_last_name = validator.trim(req.body.lname);
    var user_first_name = validator.trim(req.body.fname);
    var user_major = validator.trim(req.body.major);
    var user_dob = validator.trim(req.body.dob);
    var user_rank = validator.trim(req.body.rank);
    var school_code = "";
    var school_name = "";

    console.log("email req " + req.body.email);
    console.log("email " + user_email);
    console.log("req ",req.body);

    if(user_email !== "" && user_password !== "" && user_last_name !== "" && user_first_name !== "")
    {
        models.Direc.findOne(
            {email_format:user_email.split('@')[1]},
            'school_code school_name',
            function (err, response) 
            {
                if(err)
                {
                    res.send("ERROR:Database");
                    return;
                }
                if(response != null)
                {
                    school_code = response.school_code;
                    school_name = response.school_name;
                }
                else
                {
                    res.send("school not found + " + user_email.split('@')[1]);
                    return;
                }
....

验证前一次注册时调用的电话号码时使用的其他模块。

    var verify_phone = function(req,res)
{
    var email = validator.trim(req.body.email);
    var access_token = validator.trim(req.body.access_token);
    var key_or_verify = validator.trim(req.body.key_or_verify);
    var number = validator = validator.trim(req.body.number);
    var key = validator = validator.trim(req.body.key);
    if(email != "" && access_token != "")
    {
        if(key_or_verify == "verify" && key.length < 6)
        {
            number = key.slice(5,key.length);
            models.User.findOneAndUpdate(
                {email:email, access_token:access_token,number_validate_key:key},
                {number:number,number_validate_key:""},
                {new:true},
                function (err,response)
                {
                    if(err)
                    {
                        res.send("ERROR:Database");
                        return;
                    }
                    try
                    {
                        if(response.number == number)
                        {
                            res.send("success");
                            return;
                        }
                        else
                        {
                            res.send("not found");
                            return;
                        }
                    }
                    catch(e)
                    {
                        res.send("not found");
                        return;
                    }
                });
        }
        else if(key_or_verify == "key" && number.length > 0)
        {
            var key = Math.floor(Math.random()*99999) + 100000;
            key = key + number;

            models.User.findOneAndUpdate(
                {email:email, access_token:access_token},
                {number_validate_key:key},
                {new:true}, 
                function (err,response)
                {
                    if(err)
                    {
                        console.log(err);
                        res.send("ERROR:Database");
                        return;
                    }
                    try
                    {
                        if(response.number_validate_key == key)
                        {
                            res.send(JSON.stringify({
                                "key":key
                                }
                                ,null));
                            return;
                        }
                        else
                        {
                            res.send("not found");
                            return;
                        }
                    }
                    catch(e)
                    {
                        res.send("not found");
                        return;
                    }
                }
            );
        }
        else
        {
            res.send("empty");
            return;
        }
    }
    else
    {
        res.send("empty");
        return;
    }
    return;
};

0 个答案:

没有答案