流星读取csv文件Papa Parse

时间:2016-08-31 02:50:41

标签: javascript csv meteor

我是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文件。在互联网上它说私人文件夹。
  4. 抱歉,我无法使用Jsfiddle共享代码,因为它是私有代码,我不允许分享。

1 个答案:

答案 0 :(得分:2)

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

meteor add harrison:papa-parse

通过网址解析文件:

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

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

通过CSV字符串解析文件:

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

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

您可以在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

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