【问题标题】:Meteor reading csv file Papa Parse流星读取 csv 文件 Papa Parse
【发布时间】:2016-08-31 02:50:41
【问题描述】:

伙计们,我是 Meteor 的新手。对于我目前的应用程序,我使用的是 openlayer,因此对于 openlayer,我调用 Template.map.onRendered 事件,它将加载一个地图,该地图有一个在地图上显示标记的叠加层,当我们点击这个标记时,会生成一个事件并调用一个弹出窗口。现在要在弹出窗口中显示的数据目前是硬编码的,但我想从存储在服务器上的 .csv 文件中读取它。

我查看了建议在此代码中使用 Papa Parse 的在线编码器。

Papa.parse("http://example.com/file.csv", {
    download: true,
    complete: function(results) {
        console.log(results);
    }
});

我的问题是:

  1. 但是,我不明白代码以及如何使用它来解决我的问题 问题。
  2. 就浏览器而言,这样做是否安全 兼容性?
  3. 我应该将这个 .csv 文件保存在哪个文件夹中。在互联网上它说私人文件夹。

抱歉,我无法使用 Jsfiddle 共享代码,因为它是私有代码,我不允许共享它。

【问题讨论】:

  • .csv 文件是发送到客户端还是只发送到服务器端?
  • @Niveedit .csv 文件将在服务器端,我只想将该数据加载到数组中。

标签: javascript csv meteor


【解决方案1】:

PapaParse 主要用于客户端。它还有一个 Meteor 包装器,harrison:papa-parse,所以你也可以尝试安装它:

meteor add harrison:papa-parse

通过 URL 解析文件:

要在服务器端通过 URL 解析 CSV 文件,您可以尝试使用 Parse Remote File 选项:

Papa.parse(url, {
    download: true,
    // rest of config ...
})

通过 CSV 字符串解析文件:

否则,您可以将文件存储在 /private 文件夹中,因为在 Meteor 中保护文件安全是一个不错的选择。

然后您可以使用将返回 UTF-8 编码字符串的 Assets.getText() 方法访问文件 /private/file.csv

您可以在Assets.getText() 回调中包含PapaParse string function。之后,您可以将生成的函数包装在 Meteor method 中,您可以使用 Meteor.call() 从客户端调用它:

Meteor.methods({
    'parseFile'() {
        // read private asset as text
        Assets.getText('/private/file.csv', (error, result) => {
          if(error) {
            return console.log(error);
          }
          // 'result' should be a UTF-8 string, 
          // parse it using PapaParse string function
          return Papa.parse(result)
        });
    }
});

看看这是否有效,请阅读文档了解更多详细信息。

如果它不起作用,请检查您是否可以在服务器端读取源文件。通常,结果是相对路径错误。

替代方案:BabyParse

您还可以尝试使用名为 BabyParse 的 PapaParse Node.js 分支,可在 NPM 上找到。但是,它不能读取文件,只能读取字符串。因此,您首先必须通过Assets.getText() 读取 CSV 文件并将其转换为 CSV 字符串。然后,您可以将 CSV 字符串输入 BabyParse 以获得结果。

【讨论】:

  • 哇,这看起来不错.. 很好的解释.. 我会试试看,如果它有效,会回复你,并将接受这个作为例外答案..
  • 嗨 Nivedit,我们是否必须在 html 中包含 ..
  • 还有你怎么称呼这个方法我用 Meteor.call('parseFile', (err, res) => { if (err) { alert(err); } else { // 成功! } });
  • @ArjunChaudhary,你应该通过 npm 安装 PapaParse,然后阅读 Meteor 文档,了解如何在代码中包含 npm 包:guide.meteor.com/using-npm-packages.html。你的 Meteor 方法调用在我看来也不错。
  • { 数据:[ [ '/buildingData.csv' ] ],I20160905-15:24:08.942(10)?错误:I20160905-15:24:08.942(10)? [ {类型:'分隔符',I20160905-15:24:08.943(10)?代码:'UndetectableDelimiter',I20160905-15:24:08.943(10)?消息:'无法自动检测分隔符;默认为 \',\'', I20160905-15:24:08.944(10)?行:未定义}],I20160905-15:24:08.944(10)?元:I20160905-15:24:08.945(10)? {分隔符:',',I20160905-15:24:08.946(10)?换行符:'\n',
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2022-09-27
  • 1970-01-01
  • 2018-05-29
  • 2014-04-17
  • 2018-04-01
  • 2021-11-13
相关资源
最近更新 更多