我正在尝试使用Meteor读取JSON文件 . 我已经在stackoverflow上看到了各种答案,但似乎无法让它们工作 . 我有tried this one,基本上说:
- 使用以下内容创建名为private / test.json的文件:
[{"id":1,"text":"foo"},{"id":2,"text":"bar"}]
- 在服务器启动时读取文件内容(server / start.js):
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
- 如果已经尝试了这里描述的所有选项:Importing a JSON file in Meteor或多或少相同的结果 .
希望有人可以帮助我
2 回答
服务器方法没问题,只需删除多余的分号(;)即可 . 您需要在客户呼叫中多一点 . JSON数据来自回调 .
在点击事件中使用此选项:
流星!
根据the docs,
Assets.getText
仅在服务器上可用,因为它旨在读取private
目录中的数据,客户端不应该访问该目录(因此名称) .如果要将此信息提供给客户端,您有两种选择:
完全按照您的方式使用
Assets.getText
,但在服务器上的方法内部,并从客户端调用此方法以返回结果 . 这似乎是我的最佳选择,因为您通过该方法限制对数据的访问,而不是将其完全公开 .将它放在
public
文件夹中,并使用类似jQuery.getJSON()的内容来读取它 . 这还没有完成,所以我无法提供任何进一步的建议,但它看起来非常简单 .