私はmySqlデータベースでnode.jsに取り組んでいます。node.js synchronously mysql query
Google MapsのAPIが私を返す場合、私はここで、だから、(シーケンス)
var pool = mysql.createPool({
connectionLimit : 10,
host : 'localhost',
user : 'root',
password : '',
database : 'myTestDb'
});
var googleAPILink = 'https://roads.googleapis.com/v1/snapToRoads?path='+lastLat+','+lastLong+'|'+currentLat+','+currentLong+'&interpolate=true&key=GOOGLE_MAP_KEY';
console.log(googleAPILink);
var roadResponse = request(googleAPILink, function (error, response, body) {
if (!error && response.statusCode == 200) {
responseData = JSON.parse(body);
for(i = 0; i < responseData.snappedPoints.length; i++) {
var locationArrayObject = responseData.snappedPoints[i];
var locationArrayObjectInsider = (locationArrayObject.location);
var roadLat = locationArrayObjectInsider.latitude;
var roadLong = locationArrayObjectInsider.longitude
var rideStatus = rows2[0].status;
var rideStartedAns = 'n';
if(rideStatus == 's')
{
rideStartedAns = 'y'
}
var post = {
tripid: rideId,
latitude: roadLat,
road_longitude: roadLong,
rideStarted: rideStartedAns,
routeRideCounter: routeCounter,
status: 'y'
};
pool.getConnection(function(err, connectDB4) {
var qry = connectDB4.query('INSERT INTO tbl_rout SET ?', post, function(err5, result5) {
console.log(qry.sql);
connectDB4.release();
});
});
}
}
});
をGOOGLEMAPS sanpToRoad APIからLAT-長いルートをフェッチし、私のテーブルにそのデータを挿入するが、それは流れの中に挿入されていないですよ
1のようにLAT-長いルートシーケンス)LAT
:12.3456789、 長:12.3456789
2)
緯度:23.1456789、 長:23.1456789
3)
緯度:34.1256789、 長:34.1256789
それは第1のインサートレコード3とすることができるであろう)は、レコード1を挿入することができます)は、レコード2を挿入することができます。
これは私のコードと競合し、私は地図道路の道の適切な流れを得ることができません。
私を助けてください。
私はこの問題は、あなたが同期のものと非同期コードを混合していると思います。あなたのforループの各反復は 'INSERT'クエリを起動していて、コールバックでforループで直接生成された' post'オブジェクトを使用していますので、挿入クエリが非同期であるために 'post'が保持する値は保証されません。それがいつ実行されるかを知る方法はありません。 – abhishekkannojia