我正在使用mySql数据库在node.js中工作。
我从googleMaps sanpToRoad Api获取lat-long路径并将该数据插入到我的表中,但它没有插入流程(序列)
enum
所以,这里,如果谷歌地图API返回拉特长路线序列,如
1)
lat:12.3456789, 长:12.3456789
2)
lat:23.1456789, 长:23.1456789
3)
lat:34.1256789, 长:34.1256789
然后它可能是第一次插入记录3)然后可能是插入记录1)然后可能是插入记录2)。
因此它会与我的代码冲突,我无法获得正确的地图道路路径。
请帮帮我。
答案 0 :(得分:1)
问题是你的for循环刷新所有请求。使用这种技术,您无法控制查询执行流程。
有两种方法可以实现这个目标
第二种方法是使用异步模块 async.eachSeries将逐个执行查询而不是刷新,这将按顺序输入数据。检查下面的例子。
do npm install async --save
var async = require('async');
async.eachSeries(responseData.snappedPoints , function(snappedPoint , cb){
var locationArrayObject = snappedPoint;
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();
cb();
});
});
}, function(){
console.log('execuation completed);
});