我正在尝试使用Meteor读取JSON文件。我已经在stackoverflow上看到了各种答案,但似乎无法使它们工作。我有tried this one基本上说:
[{"id":1,"text":"foo"},{"id":2,"text":"bar"}]
Meteor.startup(function() {
console.log(JSON.parse(Assets.getText('test.json')));
});
然而,这个看似非常简单的示例不会将任何内容记录到控制台。如果我试着将它存储在一个变量而不是console.logging它然后显示它客户端我得到
Uncaught ReferenceError: myjson is not defined
其中myjson是我存储它的变量。我试过阅读JSON客户端
Template.hello.events({
'click input': function () {
myjson = JSON.parse(Assets.getText("myfile.json"));
console.log("myjson")
});
}
结果是:
Uncaught ReferenceError: Assets is not defined
希望有人可以帮助我
答案 0 :(得分:4)
根据the docs,Assets.getText
仅在服务器上可用,因为它旨在读取private
目录中的数据,客户端无法访问该目录(因此这个名字。)
如果您想将此信息提供给客户,您有两种选择:
Assets.getText
,但在服务器上的方法内,并从客户端调用此方法以返回结果。这似乎是我的最佳选择,因为您通过该方法限制对数据的访问,而不是将其完全公开。public
文件夹中,并使用类似jQuery.getJSON()的内容来阅读它。这不是我曾经做过的事情,所以我无法提供任何进一步的建议,但看起来非常简单。答案 1 :(得分:3)
服务器方法没问题,只需删除多余的分号(;)即可。您需要在客户呼叫中多一点。 JSON数据来自回调。
在点击事件中使用此功能:
if (typeof console !== 'undefined'){
console.log("You're calling readit");
Meteor.call('readit',function(err,response){
console.log(response);
});
}
流星!