我正在尝试创建一个扩展我对Node和MySQL理解的限制的报告。
我有already established我想要显示的每年需要调用我需要的年度日期信息。我现在有一个可以返回我需要的正确数据的查询,我只需要在Node环境中重复这个。
来自Delphi背景,以下代码将为我提供我需要的数据
LoadTurnover = function (req, reply) {
const queryDay = "-04-06";
const maxDate = new Date();
let queryYear = 2000;
let qd = new Date(queryYear + queryDay);
let dateArray = [];
while (qd < maxDate) {
// Get the data from the server
let data = getData(sql);
//
let turnoverObj = {};
turnoverObj.date = qd;
turnoverObj.Employees = data[0][0].Employees;
turnoverObj.Leavers = data[1][0].Leavers;
// Add current year data to our result set
dateArray.push(turnoverObj);
// Setup the next year condition
queryYear ++;
qd = new Date(queryYear + queryDay);
}
};
我需要能够将Promise发送到数据库服务器(getData)并适当地填充turnoverObj
和dateArray
。这需要重复,直到qd
大于今天的日期。
答案 0 :(得分:1)
您可以使用Bluebird承诺的.map()
功能:
var Promise = require('bluebird);
let dates = [];
let dateArray = [];
while (qd < maxDate) {
dates.push(qd);
queryYear++;
qd = new Date(queryYear + queryDay);
}
Promise.map(dates, function(singleDate){
return getData(sql).then(function(data){
let turnoverObj = {};
turnoverObj.date = singleDate;
turnoverObj.Employees = data[0][0].Employees;
turnoverObj.Leavers = data[1][0].Leavers;
dateArray.push(turnoverObj);
return;
});
}).then(function(finalResult){
console.log(dateArray);
});
希望这会有所帮助。