[英]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.