伙计们,我是 Meteor 的新手。对于我目前的应用程序,我正在使用 openlayer,因此对于 openlayer,我调用 Template.map.onRendered
事件,该事件将加载一个 map ,该 map 具有一个叠加层,该叠加层在 map 上显示标记,当我们单击该标记时,一个事件是生成并调用弹出窗口。现在弹出窗口中显示的数据目前是硬编码的,但我想从存储在服务器上的 .csv 文件中读取它。
我查看了在线编码员建议将 Papa Parse 与此代码一起使用。
Papa.parse("http://example.com/file.csv", {
download: true,
complete: function(results) {
console.log(results);
}
});
我的问题是:
- 但是,我不理解代码以及如何使用它来解决我的问题 问题。
- 而且这样做在浏览器方面是否安全 兼容性?
- 我应该将这个 .csv 文件保存在哪个文件夹中。在互联网上它说私有(private)文件夹。
抱歉,我无法使用 Jsfiddle 共享代码,因为它是私有(private)代码,我不能共享它。
最佳答案
PapaParse 主要用于客户端使用。它还有一个 Meteor 包装器,harrison:papa-parse ,因此您也可以尝试安装它:
meteor 添加 harrison:papa-parse
通过 URL 解析文件:
要通过 URL 在服务器端解析 CSV 文件,您可以尝试使用 Parse Remote File选项:
Papa.parse(url, {
download: true,
// rest of config ...
})
通过 CSV 字符串解析文件:
否则您可以将文件存储在/private
中文件夹,因为它是 Meteor 中保护文件安全的好选择。
然后您可以使用 Assets.getText()
访问文件 /private/file.csv
将返回 UTF-8 编码字符串的方法。
您可以包含 PapaParse string function在 Assets.getText()
回调中。之后,您可以将结果函数包装在 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 以获得结果。
关于javascript - meteor 读数 csv 文件 Papa Parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239998/