编辑:问题在于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;
};