I have problem for node.js.
I read data for socket, using dgram.createSocket('udp4').
I parse data and write to mysql db (use https://npmjs.org/package/mysql) with code:
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();
});
The problem is that I see row duplicates in "lastPosition" table for key CarID, although this excludes the code. Where did I go wrong?
I fixed it with code:
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();
});