[英]Node.js Registration Form
我正在尝试在我的Web应用程序中实施注册表格。 一旦我将用户提供的“名称”和“电子邮件”插入我的数据库(Mysql)。 如果已经使用了“名称”或“电子邮件”,我需要单独的错误消息在注册表单上弹出,例如
“'名称'已被使用”
要么
“'电子邮件'已经被使用”
问题是我使用从Mysql中得到的错误来显示消息
“'名称'或'电子邮件'已被使用”
我的问题是我如何使用Mysql错误来区分是重复的“名称”还是“电子邮件”。
app.post(myArgs[0]+"/register", function(req,res){
con.query('insert into users values(UUID(),\'' + req.body.user + '\',\''+req.body.pass+'\',\''+req.body.mail+'\',NULL)',function(err,res){
if(err){
console.error(err+" Ooops name or email already in use !"); //here is where I want to find out whether it is the name or the email that is already in use!
errorregister();
return;
} else {
passregister();
}
})
function errorregister(){
res.redirect(myArgs[0]+"/register");
console.log(_dict);
}
function passregister(){
res.redirect(myArgs[0]+"/login");
console.log(_dict);
}
});
在数据库给您一个关于插入的错误之后,您知道email
或name
(或两者)都是重复的。
然后,您可以在数据库中搜索name
,然后搜索email
。
之后,自定义您的错误消息很容易。
如果出现竞争情况(两个用户试图同时注册相同的名称/电子邮件),则在插入之前进行检查可能会出错。 插入后,您肯定知道某些内容已重复。
在MySQL中插入时检查错误1586
( 错误代码列表 )
您可以检查发生错误的INSERT
。
只要在UNIQUE KEY列中插入重复的密钥,就会返回此错误。 基于此错误,您可以向客户端发送AJAX response
,该AJAX response
将更新DOM
以显示所需的错误。
好吧,这就是我的完成方式
app.post(myArgs[0]+"/register", function(req,res){
con.query('insert into users values(UUID(),\'' + req.body.user + '\',\''+req.body.pass+'\',\''+req.body.mail+'\',NULL)',function(err,res){
if(err){
error(err);
return;
} else {
passregister();
}
})
function error(err){
if (err.toString().search("'PRIMARY'") != -1 ){
console.error(" Ooops!!! name duplicated");
res.redirect(myArgs[0]+"/register")
} else {
console.error(" Ooops!!! email duplicated");
res.redirect(myArgs[0]+"/register")
}
return;
}
function passregister(){
_dict[req.body.user]={};
res.redirect(myArgs[0]+"/login");
console.log(_dict);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.