xmlファイルから値を読み取り、すべてのxmlファイルの値をサブ配列の配列に格納するExpress.Jsを持つNode.Js Webアプリケーションが、 xmlファイル。 "にconsole.log(all_software_requests);" のために、これまでのところJavaScriptコールバックは、値がループ内にプッシュされた配列です
app.get('/get_software_requests', function (req, res) {
console.log("loading software requests");
requests_callback(function(all_software_requests){
console.log(all_software_requests);
});
function requests_callback(callback){
loadAllSoftwareRequests(function(all_software_requests){
callback(all_software_requests);
});
}
});
function loadAllSoftwareRequests(callback){
console.log("loading requests");
fs.readdir("/project_requests", function(error, files) {
files.forEach(filename => {
var software_request = new Array();
loadSoftwareRequestXML(filename, software_request, function(software_request){
all_software_requests.push(software_request);
callback(all_software_requests);
});
});
});
}
function loadSoftwareRequestXML(filename, software_request, callback){
var xmlparser = new xml2js.Parser();
var filepath = "/project_requests/" + filename;
fs.readFile(filepath, "utf-8", function(error, values){
xmlparser.parseString(values, function(error, xmlfile){
var xmldata = xmlfile;
date_requested = xmldata.ProjectRequest.DateRequested;
client_org = xmldata.ProjectRequest.ClientOrganization;
proposed_budget = xmldata.ProjectRequest.ProposedBudget;
contact_name = xmldata.ProjectRequest.ContactName;
delivery_date = xmldata.ProjectRequest.DeliveryDate;
requirements = xmldata.ProjectRequest.UserRequirements;
software_request.push(date_requested);
software_request.push(client_org);
callback(software_request);
});
});
}
:現時点では、私は、ノード上で次のコードを持っていますメインapp.get、コンソール出力に:
私は唯一のノードは高く評価され
すべてのヘルプや提案のように、最後の反復の結果を返したいです。お気軽にコメントしてください。ありがとう。
こんにちは、お寄せいただきありがとうございます。 –
こんにちは、私は 'Promise'なしで簡単なソリューションを追加します –
シンプルなソリューションをありがとう。それは美しく働いた! :) –