【发布时间】:2014-12-06 16:08:48
【问题描述】:
我正在做一个项目,我必须在 3 个不同的表中存储多个站点、一条路线及其关系。我成功地存储了站点和路线。但要存储关系,我需要获取最近存储的路线和所有最近存储的站点的 id(自动生成的主键)。我通过运行查询来查找最大 id 来获取它们,这是最新存储的 id。这是我的代码:
create: function (req,res,next)
{
var stopsArray = req.param('latLngArray');
var so="";
var totalBusStops = req.param('totalStops');
var routeToSave=new OneRoute();
routeToSave.routeName="This route";
routeToSave.totalStops=totalBusStops;
Routes.create(routeToSave, function routeCreated(err, routeToSave){
if(err) return next(err);
res.json(routeToSave);
}); // creating routes
for(var i=0;i<stopsArray.length;i++){
var us = new busStop();
us.lngPos = stopsArray[i].Lng;
us.latPos = stopsArray[i].Lat;
BusStop.create( us ,function stopCreated (err,us)
{
if(err) return next(err);
res.json(us);
}); // creating bus stops#
}
var currentRouteId = "";
Routes.query("select max(routeId) from routes", function(err, results) {
if(err){ res.json({ error: err.message }, 400);}
else{
currentRouteId = results[0]['max(routeId)'];
console.log("route ID: "+results[0]['max(routeId)']);
}
}); // max riute ID
var relation= new routeStopR();
relation.routeId=currentRouteId;
var currentStopId = "";
BusStop.query("select max(stopId) from busstop", function(err, results) {
if(err){res.json({ error: err.message }, 400);}
else{
currentStopId = results[0]['max(stopId)'];
console.log("Bus Stop ID: "+currentStopId);
}
});
relation.stopId=currentStopId;
console.log("");
console.log("relation Route: "+relation.routeId);
console.log("relation Stop: "+relation.stopId);
RouteStops.create(relation,function relationCreated (err,relation)
{
if(err) return next(err);
res.json(relation);
});
}
我面临的问题是 get 查询在函数末尾运行,无论我将它们放在函数中的什么位置。因此,我无法使用从查询中获得的 ID。在这方面的任何帮助将不胜感激。
我面临的另一个问题是,从busstop 表中获取max(stopId) 的查询从旧数据返回值。而且有时候routes的max(routeID)也有这个问题。
请帮我解决这个问题。
【问题讨论】: