2017-08-18 5 views
0

私はjavascriptとnode jsの初心者です。私は実際にMySQLの価値に基づいて2つのデータを比較したいと思います。ループnodejsの関数から値を取得

私がやりたいことはここに私のコードは

ルート/ masterdata.js

var Masterdata = require('../models/Masterdata'); 
var outputFile = {} 
for (var i = 0; i < dataFile.length; i++) { 
    if (dataFile[i]['existing'] != null) { 
    for (var x = 0; x < dataFile.length; x++) { 
     var param = { 
     tech_row: dataFile[i]['existing'], 
     tech_col: dataFile[x]['new'] 
     }; 

     Masterdata.compareData(param, function(err, rows) { 
     console.log(rows); 
     outputFile.push({ 
      value: rows 
     }); 
     }); 
    } 
    } 
} 

console.log(outputFile); 

だループがデータのdb -> concat組からdata -> get値のペアのためであるとvalue -> endloop

models/Masterdata.js

var Masterdata = { 
    compareData: function(param, callback) { 
    return db.query('SELECT value FROM sod_matrix WHERE TECH_NAME_ROW = ? AND TECH_NAME_COL = ?', [param.tech_row, param.tech_col], callback); 

    } 
} 

私の質問は、ループ内の配列に関数比較データからデータを取り込む方法ですか?

+1

outputFileは、配列ではなくオブジェクトです。そのため、あなたの情報をプッシュできません。 var outputFile = [];を使用します。代わりに。 –

答えて

0
var Promise = require('bluebird'); 
var completed=[]; 
var Masterdata = require('../models/Masterdata'); 
var outputFile = []; //should be an array 
for (var i = 0; i < dataFile.length; i++) { 
    if (dataFile[i]['existing'] != null) { 
    for (var x = 0; x < dataFile.length; x++) { 
     var param = { 
     tech_row: dataFile[i]['existing'], 
     tech_col: dataFile[x]['new'] 
     }; 
     completed.push(new Promise(resolve, reject){ 
     Masterdata.compareData(param, function(err, rows) { 
      if(err) 
      { 
      reject(err); 
      } 
      else 
      { 
      console.log(rows); 
      outputFile.push(rows); //that;s pretty enough 
      resolve(); 
      } 
     }); 
     }); 
    } 
    } 
} 
Promise.all(completed) 
.then((res) 
{ 
    console.log(outputFile); 
}); 
+0

私はこれを試しましたが、outputFileはそれを同期させる方法を定義していません。ありがとうございます。 –

+0

ああ、申し訳ありませんが、私は 'Masterdata.compareData'が非同期であったことに気付かなかった。このようにして、約束やコールバックを使うべきです。私はサンプルを編集して、これが約束を使ってどのように達成できるのかを示しました。 – Jehy

関連する問題