如何处理错误: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 中的重复条目的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 异步应该如何处理

如何处理 MVC nodejs 服务上的角色(jsonwebtoken,mongoose)

mongodb 连接如何处理 NodeJS express 服务器中的并发请求?

当事件循环等待数据库操作时,如何处理对 nodejs 服务器的传入请求

连接停止时如何处理猫鼬数据库

Node js - 如何处理多个异步任务