首页 文章

Meteor:阅读简单的JSON文件

提问于
浏览
8

我正在尝试使用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

希望有人可以帮助我

2 回答

  • 3

    服务器方法没问题,只需删除多余的分号(;)即可 . 您需要在客户呼叫中多一点 . JSON数据来自回调 .

    在点击事件中使用此选项:

    if (typeof console !== 'undefined'){
        console.log("You're calling readit");
        Meteor.call('readit',function(err,response){
            console.log(response);
        });
    }
    

    流星!

  • 4

    根据the docsAssets.getText 仅在服务器上可用,因为它旨在读取 private 目录中的数据,客户端不应该访问该目录(因此名称) .

    如果要将此信息提供给客户端,您有两种选择:

    • 完全按照您的方式使用 Assets.getText ,但在服务器上的方法内部,并从客户端调用此方法以返回结果 . 这似乎是我的最佳选择,因为您通过该方法限制对数据的访问,而不是将其完全公开 .

    • 将它放在 public 文件夹中,并使用类似jQuery.getJSON()的内容来读取它 . 这还没有完成,所以我无法提供任何进一步的建议,但它看起来非常简单 .

相关问题