Template.map.onRendered
事件,它将加载一个地图,该地图有一个覆盖图,在地图上显示标记,当我们点击此标记时,会生成一个事件并调用一个弹出窗口。现在,弹出窗口中显示的数据目前是硬编码的,但我想从存储在服务器上的.csv文件中读取它。
我检查了在线编码器,建议使用Papa Parse使用此代码。
Papa.parse("http://example.com/file.csv", {
download: true,
complete: function(results) {
console.log(results);
}
});
我的问题是:
抱歉,我无法使用Jsfiddle共享代码,因为它是私有代码,我不允许分享。
答案 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以获得结果。