如何处理错误:ER_DUP_ENTRY:nodejs 中的重复条目
Posted
技术标签:
【中文标题】如何处理错误:ER_DUP_ENTRY:nodejs 中的重复条目【英文标题】:How to handle Error: ER_DUP_ENTRY: Duplicate entry in nodejs 【发布时间】:2017-08-03 15:14:42 【问题描述】:当出现重复条目时,我在 mysql 数据库中有唯一列,它给出了错误:ER_DUP_ENTRY: Duplicate entry 如何处理 nodejs 的错误表单
【问题讨论】:
如何处理这些错误信息? 我的最终目标是检查表中是否已存在电子邮件 ID(如果存在)发送状态为“电子邮件 ID 已存在” 好吧,如果您收到 ER_DUP_ENTRY 消息,并且知道您可能违反的唯一唯一键是电子邮件地址,那么您只需返回您在评论中描述的消息。 @Shadow 如果我们在一个表中有两个唯一列怎么办? @SarojSasmal MySQL 的默认错误消息也会返回违反的唯一/主键名称。 【参考方案1】:如果您正在使用 sequelize,这会有所帮助:
try
//here you try to add something in your database;
catch (error)
if (error.parent.code === 'ER_DUP_ENTRY')
//here you can handle this error;
else
//here you can handle other errors;
【讨论】:
【参考方案2】:将保存放在 try 块中并捕获所有错误。添加特定的重复检查并将其余部分作为默认值处理
try
return await this.userProfilesRepository.save(userProfile);
catch (err)
if (err.code === 'ER_DUP_ENTRY')
//handleHttpErrors(SYSTEM_ERRORS.USER_ALREADY_EXISTS);
else
//handleHttpErrors(err.message);
【讨论】:
【参考方案3】:首先您必须通过选择查询检查重复数据。那么如果您的结果长度不为零,那么请编写您的插入查询。
router.post('/process', function(req, res, next)
var mysql= require('mysql');
var connection=mysql.createConnection(
host:'localhost',
user:'root',
password:'',
database:'user',
multipleStatements: true
);
connection.connect(function(err)
if(err)
throw err;
else
console.log("Connected");
var name= req.body.name;
console.log(name);
var email=req.body.email;
console.log(email);
var password=req.body.password;
if (name=="" || email=="" || password=="")
res.render('process', flag: false, condition: false,fail:false);
else
var sql="SELECT * from user where name='"+name+"'";
connection.query(sql, function(err,result)
if(result.length!=0)
res.render('process', name:name, condition:false, fail:false);
else
var sql="INSERT INTO user VALUES('','"+name+"','"+email+"','"+password+"')";
connection.query(sql, function(err,result)
res.render('process', name:name, flag: true, condition: true);
);
);
);
);
【讨论】:
以上是关于如何处理错误:ER_DUP_ENTRY:nodejs 中的重复条目的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 MVC nodejs 服务上的角色(jsonwebtoken,mongoose)
mongodb 连接如何处理 NodeJS express 服务器中的并发请求?