导出PapaParse函数的问题

时间:2018-07-30 13:17:48

标签: javascript node.js csv papaparse

我是JavaScript和Node的新手,正在为我的第一个应用程序整合概念验证。我的目标是:

  • 解析CSV文件(因为我想要的数据很小以保证数据库的安全)
  • 将已解析的数据加载到数组中
  • 在数组中搜索特定的“日期”,其中还有两个我可以从中提取数据的字段
  • 将数据呈现为导出函数(如果不准确,请原谅我的措辞)

在前任同事的帮助下,我发现PapaParselodash有助于解析数据和搜索数据。如果我在同一应用程序中调用该函数,则该应用程序将运行良好。当我尝试导出函数时,没有任何结果。我已经尝试了两个星期独自解决这个问题,希望有人可以帮助我。

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数据在控制台中。 我将不胜感激任何帮助或为我指明正确的方向。我认为这将是一个简单的测试,让我可以继续进行概念验证的下一个阶段,这已经变成了睡眠不足和令人沮丧的几周,大声笑。谢谢。

2 个答案:

答案 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