nodejs mysql查询doesn

我想检查表中是否存在某个date,如果不是,我想插入它。 我已经在其他项目中做到了这一点,但它现在工作,但现在我不知道为什么它不工作。

var mysql = require('mysql'); var connection = mysql.createConnection({ host : '', user : '', password : '', database : '' }); [..] connection.query('SELECT id FROM users [...]', function(err, results) { if (err) { throw err; } else if (results.length==1) { callback(null, results[0].id); } else { console.log('before insert'); connection.query('INSERT INTO users SET ?', user, function(err, result) { console.log('insert'); if (err) throw err; }); } }); 

与INSERT查询不起作用,但如果我从SELECT查询中获得该查询,那么它的工作原理。 如果是INSERT或其他查询,则无关紧要。 在控制台中,我只看到:“插入之前”,没有错误。 这个查询是在一个循环中。

你在插入语句中有语法错误,它必须是:

  connection.query('INSERT INTO users (`id`) VALUES (?)', user, function(err, result) { console.log('insert'); if (err) throw err; }); 

您也可以使用INSERT IGNORE语法优化代码以仅运行单个查询。 如果logging已经存在,MySQL将忽略插入,而不会给出任何错误。 但是您的字段id必须设置primary key

优化后,代码将如下所示:

 var mysql = require('mysql'); var connection = mysql.createConnection({ host : '', user : '', password : '', database : '' }); [..] connection.query('INSERT IGNORE INTO users (`id`) VALUES (?)', user, function(err, results) { if (err) { throw err; } else { callback(null, user); } });