当我写这个查询sql datbase的承诺时,我没有用require测试它,我只是直接从控制台中的节点运行js文件。现在我需要它来完成循环时返回数据,我无法弄清楚如何。承诺以及从SQL读取数据对我来说都是新的,所以我很高兴让它工作。但现在我需要这个代码
var dbData = new getDataSQL();
它返回{}而不是大块数据。 它完成了它的承诺,但数据没有返回。 关于如何最好地返回数据的任何想法?
module.exports = function getDataSQL(){
//JSON OBJECTS
var dates = require('./JSON/dates.js');
var companies = require('./JSON/companies.js');
//SQL FUNCTION
var sqlConJS = require('./sqlCon.js');
function fn(retVal, i, startDate, endDate){
data[i] = JSON.parse(retVal);
var total = 0;
for(var b = 0; b<Object.keys(data[i].result).length;b++){
total = total + data[i].result[b].Amount
}
data[i].totalAmount = total;
data[i].startDate = startDate;
data[i].endDate = endDate;
console.log("No= "+i,"Reccs= " + Object.keys(data[i].result).length,"StartDate=" + startDate,"EndDate=" + endDate, "Amount = " + Math.floor(total));
dataP();
}
//INIT SQL QUERY
var data = [];
var incrDat = 0;
var dataPromise = function(i){
return new Promise(function(resolve, reject){
data[i]={};
var sqlCon = new sqlConJS(fn, dates[i].startDate, dates[i].endDate, companies[9].company, i);
if(dates.length===i)reject();
else resolve();
});
};
var dataP = function(){
dataPromise(incrDat++).then().catch(function(){
console.log("done!");
console.log(data[0].result[0]["Posting Date"]);
return data;
});
}
dataP();
}
答案 0 :(得分:-1)
没关系,我得到它,回调函数offcourse!我还有很多需要学习的东西。在顶部声明函数时添加cbRetData。
{
"name": "nutrinext",
"version": "0.0.0",
"dependencies": {
"angular": "~1.3.1",
"angular-bootstrap": "~0.11.2",
"angular-timeago": "~0.1.3",
"angular-ui-router": "~0.2.11",
"ngstorage": "~0.3.0",
"bootstrap": "~3.3.0",
"bootstrap-markdown": "~2.7.0",
"jquery": "1.10.2",
"fastclick": "~1.0.3",
"fontawesome": "~4.2.0",
"pubnub": "~3.6.4"
},
"devDependencies": {},
"resolutions": {
"angular": "~1.3.1",
"bootstrap": "~3.3.0"
}
}
在Console.log下的(“完成!”);我把
module.exports = function getDataSQL(cbRetData){
在主js脚本中我们创建函数cbRetData,如此
cbRetData(data);
我们在需要它之后调用getDataSQL函数你只需像这样传递函数cbRetData。
function cbRetData(retData){
dbData = retData;
console.log("retData to dbData coming in!");
console.log(dbData);
}
我刚开始接受回调函数等等。