Node.js 登记表
Node.js Registration Form
我正在尝试在我的网络应用程序中实施注册表单。一旦我将用户提供的 'name' 和 'email' 插入我的数据库 (Mysql)。如果 'name' 或 'email' 已经在使用中,我需要 单独的 错误消息在注册表单上弹出,像
"the 'name' is already in use"
或
"the 'email' is already in use"
问题是我使用从 Mysql 得到的错误来显示消息
"the 'name' or 'email' is already in use"
我的问题是如何使用 Mysql 错误来区分被复制的是 'name' 还是 'email'。
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
。
之后,自定义错误消息就很容易了。
插入前的检查可能会在竞争条件的情况下出错(两个用户试图同时注册相同的 name/email)。插入后,你肯定知道有重复的东西。
插入 MySQL(List of error codes)
时检查错误 1586
您可以检查 INSERT
发生的错误。
只要在 UNIQUE KEY 列中插入重复键,就会返回此错误。基于此错误,您可以向客户端发送 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);
}
});
我正在尝试在我的网络应用程序中实施注册表单。一旦我将用户提供的 'name' 和 'email' 插入我的数据库 (Mysql)。如果 'name' 或 'email' 已经在使用中,我需要 单独的 错误消息在注册表单上弹出,像
"the 'name' is already in use"
或
"the 'email' is already in use"
问题是我使用从 Mysql 得到的错误来显示消息
"the 'name' or 'email' is already in use"
我的问题是如何使用 Mysql 错误来区分被复制的是 'name' 还是 'email'。
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
。
之后,自定义错误消息就很容易了。
插入前的检查可能会在竞争条件的情况下出错(两个用户试图同时注册相同的 name/email)。插入后,你肯定知道有重复的东西。
插入 MySQL(List of error codes)
时检查错误1586
您可以检查 INSERT
发生的错误。
只要在 UNIQUE KEY 列中插入重复键,就会返回此错误。基于此错误,您可以向客户端发送 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);
}
});