有線の問題に遭遇しました。mongodbを使用してデータを保存すると、一部のデータが欠落しています。これは、非同期機能が原因だと思います。
したがって、このリストのタイムテーブルには、reを使用します
/ *これが、train_uidと今日を使用したアプリケーションです* /
var today = new Date();
var day = today.getDay();
scheduleModel.findByTrainAndTime(train_uid,today,function(err, doc){
var a = new Object();
if(err){}
else{
if(doc != null)
{
// mongodbデータベースは、train_id、uidに関するデータを提供してくれます
a.train_uid = doc.train_uid;
a.train_id = train_id;
そして最も重要なのは、列車の時刻表です。列車の時刻表は、到着、出発、tiplocなどのjsonオブジェクトのリスト(doc.time_schedule)です。ただし、tiplocをsanox番号に変更する必要があります。これは、referenceModelがtiploc番号を提供することでsanoxを見つけるのに役立ちます。
//doc.time_schedule
// here is to add a array
したがって、非同期を使用します。リスト内の各項目について、referenceModelを使用してsanoxにクエリを実行し、配列を作成します。a.timelineを使用して各bを格納し、最後に非同期の各操作が終了すると、trainModelは次の配列を持つオブジェクトを格納します。 sanoxオブジェクト。ただし、mongodbデータベースに関しては、sanoxオブジェクトの配列のみが空であり、非同期操作が原因だと思いますが、非同期を使用したため、なぜ機能しないのですか?
a.train_uid = doc.train_uid; //works
a.train_id = train_id; works
a.timeline = [] // doesn't work
a.timeline = new Array();
var b ;
async.forEachSeries(doc.time_schedule,
function(item,callback){
referenceModel.findStanoxByTicloc(item.tiploc_code,function(err,sanox){
try{
b = new Object();
b.sanox = sanox;
a.time.push(b);
}catch(err2){
}
});
callback();
},
function(err){
trainModel.createNewTrain(a,function(){});
}
}
});