2013-07-10 2 views
2

У меня проблема для node.js.nodejs mysql amazing row duplicates

Я прочитал данные для сокета, используя dgram.createSocket('udp4'). я разобрать данные и записи в БД MySQL (использование 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, хотя это исключает код. Где я неправ?

+0

Вы можете написать обновление в качестве ответа и отметьте его как принято, пожалуйста? – verybadalloc

+0

verybadalloc, ok, done – Seryh

ответ

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(); 
    }); 
+0

Ницца! Теперь, через 36 часов, вы были бы любезны, чтобы принять свой собственный ответ? Между тем, вот моя позиция. – verybadalloc