Ich arbeite in node.js mit mySql-Datenbank.node.js synchron mysql Abfrage
ich bin Abrufen lat lange Strecken von googlemaps sanpToRoad Api und diese Daten in meine Tabelle einfügen, aber es ist nicht in Fluss (Sequenz)
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();
});
});
}
}
});
So eingefügt, hier, wenn Google Maps API mich zurück in lat-lang~~POS=TRUNC-Sequenz wie
1)
lat: 12,3456789, lang: 12,3456789
2)
lat: 23,1456789, lang: 23,1456789
3)
lat: 34,1256789, lang: 34,1256789
dann kann es erste Datensatz einfügen 3) werden dann Datensatz eingefügt werden kann, 1) kann dann Datensatz 2) eingefügt werden.
so wird es meinen Code in Konflikt geraten und ich kann nicht richtig fließen der Karte Straße Weg.
bitte helfen Sie mir.
ich glaube, das Problem ist, dass Sie Asynchron-Code mit sync eines mischen. Jede Iteration Ihrer for-Schleife löst eine INSERT-Abfrage aus und Sie verwenden das post-Objekt, das in for loop direkt im Callback erstellt wurde. Es gibt keine Garantie, welche Werte post enthält, da Ihre insert-Abfrage dort async ist ist keine Möglichkeit zu wissen, wann es ausgeführt wird. – abhishekkannojia