nodejs mysql惊人的行重复

时间:2013-07-10 04:27:55

标签: mysql node.js sockets

我对node.js有疑问。

我使用dgram.createSocket('udp4')读取socket的数据。 我解析数据并写入mysql db(使用https://npmjs.org/package/mysql)代码:

var result = {
                  CarID: "0094455",
                  Lat: 55.0405,
                  Lon: 82.981,
                  Time: 1373435075
};
connectionPool.getConnection(function(err, connection) {
     connection.query('SELECT * FROM lastPosition WHERE CarID = ? ORDER BY Time DESC LIMIT 1',[result.CarID], 
            function(err, rows, fields) {
          if (rows.length) {
            connection.query('UPDATE lastPosition SET ? WHERE CarID = ?', [result, result.CarID]);
          } else {
            connection.query('INSERT INTO lastPosition SET ?', result);
         }
        });
     connection.end();
});

问题是我在“lastPosition”表中看到了关键CarID的行重复,尽管这排除了代码。我哪里出错了?

1 个答案:

答案 0 :(得分:9)

我用代码修复了它:

connectionPool.getConnection(function(err, connection) {
     connection.query('INSERT INTO `lastPosition` SET ? ON DUPLICATE KEY UPDATE Lat=VALUES(Lat), Lon=VALUES(Lon), Time=VALUES(Time)', result);
     connection.end();
    });