我是JavaScript和Node的新手,正在为我的第一个应用程序整合概念验证。我的目标是:
在前任同事的帮助下,我发现PapaParse
和lodash
有助于解析数据和搜索数据。如果我在同一应用程序中调用该函数,则该应用程序将运行良好。当我尝试导出函数时,没有任何结果。我已经尝试了两个星期独自解决这个问题,希望有人可以帮助我。
filename: newFOTD.js
var papa = require('papaparse');
var _ = require('lodash');
var fs = require('fs');
var csvfile = '../data/flavorDB.csv';
function flavorOfTheDay(date) {
papa.parse(fs.createReadStream(csvfile), {
header: true,
delimiter: ",",
complete: function(results) {
var match = _.filter(results.data, _.matches({'Date': (date)}));
match.forEach(function (flavorDB) {
if (flavorDB.Note.length != "") { /* eslint-disable no-console */
console.log("Today's flavor is " + flavorDB.Flavor + ". Did you know that today is also " + flavorDB.Note + "? How cool!");
} else console.log(flavorDB.Flavor);
})
}
})
}
flavorOfTheDay('2018-08-09');
module.exports.flavorOfTheDay = flavorOfTheDay
以上效果很好。当我尝试访问导出的函数时,没有任何数据返回。
filename: program.js
var test = require('./lib/newFOTD');
test.flavorOfTheDay('07-08-2018')
我一定对帕帕帕斯做错了事,无法弄清到底是什么。我可以在Papaparse逻辑之外的console.log(date)
函数中放置一个简单的flavorOfTheDay
,当我从'program.js'
调用该函数时,我将得到date
数据在控制台中。
我将不胜感激任何帮助或为我指明正确的方向。我认为这将是一个简单的测试,让我可以继续进行概念验证的下一个阶段,这已经变成了睡眠不足和令人沮丧的几周,大声笑。谢谢。
答案 0 :(得分:0)
我认为@MukeshSharma想要说的是:由于您的函数是异步的,因此在调用flavorOfTheDay()
函数时必须提供一个回调函数。就像您在第一个代码段中所做的一样:flavorOfTheDay('07-12-2018', doStuff)
-> doStuff 是您的回调函数。
上面修改的示例为匿名回调函数:
filename: program.js
var test = require('./lib/newFOTD');
test.flavorOfTheDay('07-08-2018', function(date, data) {
// do whatever you like with your data here
console.log(date);
console.log(data);
})
答案 1 :(得分:0)
PapaParse的问题是我如何声明CSV文件的变量以进行解析,并且需要使用HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",7);
使其起作用。
正确的方法
path
错误/原始方式
filename: newFOTD.js
var path = require('path');
var csvfile = path.join(__dirname, '..', 'data', 'flavorDB.csv');
感谢David Boskovic的帮助,我认为PapaParse代码存在问题。一旦我认为这是代码问题,就在Github上打开了一个问题。 Calling Papaparse as an exported module not returning data。