我要做的是创建一个名为GetYearByCurrency的函数(它放在“dataFunctions”上),并将特定年份和特定货币的数据保存到我的索引文件中。我在我的"dataFunctions“文件上收到错误"callback is not a function”
我从" data“文件中的API中提取数据,代码如下:
索引文件:
const data = require('./data');
const mssql = require('mssql');
const dataFunctions = require('./dataFunctions');
var AllData;
data.GetData((d)=>{
AllData=d;
//var years = Object.keys(AllData.rates)
//console.log(AllData.rates[years[1]]['EUR']);
//console.log(AllData);
console.log(dataFunctions.GetYearByCurrency(d,2016,'USD'));
});
下面的数据文件:
const fetch = require('node-fetch');
const GetData =(callback)=>{
fetch('https://api.exchangeratesapi.io/history?start_at=2015-01-01&end_at=2020-09-11&base=ILS')
.then(response => response.json())
.then(data => {
callback(data)
})
}
module.exports ={
GetData
}
最后是下面的dataFunctions
var GetYearByCurrency = (data,year,currency,callback) => {
var rates = [];
for (let m = 1; m <= 12; m++) { // Do a loop for each month of the year
const numM = m < 10 ? `0${m}` : m, //For our method of date filtering, we need to add a leading zero for Jan-Sept
month = Object.entries(data.rates) // Convert the rates objects to [key, [values]] arrays
.filter(day => {
const splitDate = day[0].split("-"); // Bear's method of splitting up the date string so we can compare month and year
return splitDate[1] == numM && splitDate[0] === "year"; // Filter them to 2019 and the current month
})
.map(day => day[1].currency) // Return a new array with only the USD values for that month
rates.push(month) // Push this array to our result array
callback(rates);
}
}
module.exports ={
GetYearByCurrency
}
对如何解决这个问题有什么建议吗?
发布于 2020-12-16 16:53:56
在这一行上:
console.log(dataFunctions.GetYearByCurrency(d,2016,'USD'));
您需要发送一个回调作为GetYearByCurrency函数的第四个参数:
dataFunctions.GetYearByCurrency(d,2016,'USD', (rates) => {
console.log(rates);
});
https://stackoverflow.com/questions/65319970
复制相似问题