2

node.js に問題があります。

を使用して、ソケットのデータを読み取りましdgram.createSocket('udp4')た。データを解析し、次のコードで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();
});

問題は、キー CarID の「lastPosition」テーブルに行の重複が表示されることですが、これによりコードが除外されます。どこで私は間違えましたか?

4

1 に答える 1

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();
    });
于 2013-07-10T16:43:10.463 に答える