如何避免在节点mysql中插入重复记录?

DDD*_*DDD 1 mysql node.js

在这里,我插入用户详细信息 username、emailid 和 contactno,而 userid 是用户表的主键。

我的查询是当我插入重复的用户名或电子邮件时,如果在表中听到重复的记录,它不允许插入记录怎么可能?

应用程序.js

app.post('/saveNewUserDetails',function(req,res){
  var form = new multiparty.Form();
  form.parse(req, function(err, fields, files){ 
    connection.query("INSERT INTO user (username,emailid,contactno) VALUES (?,?,?)", [fields.username,fields.emailid,fields.contactno] , function (error, results, fields) {
     if (error) throw error; 
      res.send({
        'status':'1',
        'success': 'true',
        'payload': results,
        'message':'New user Is saved'
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

用户

userid(primary key)    username    emailid            contactno
  1                     user-1     user1@user1.com    1234567890 
  2                     user-2     user2@user2.com    1234444444
Run Code Online (Sandbox Code Playgroud)

小智 6

对于每个条目,我们无法检查数据库中该记录是否存在,因为这需要一些时间。

所以我们将在您的表中将 username 和 emailid 设置为 UNIQUE 字段。因此,每当我们尝试将重复元素插入表中时,我们都会收到重复键错误。

现在,我们将利用该错误作为优势,通过简单地处理它来加快进程。

// pseudo code
// we are simply ignoring it
if( error & error != "ER_DUP_ENTRY" ){
  // do normal error handling
}
Run Code Online (Sandbox Code Playgroud)

这是避免重复插入的最快解决方案