Jaspermid Jaspermid - 2 months ago 30
JSON Question

Meteor: reading simple JSON file

I am trying to read a JSON file with Meteor. I've seen various answers on stackoverflow but cannot seem to get them to work. I have tried this one which basically says:


  1. Create a file called private/test.json with the following contents:





[{"id":1,"text":"foo"},{"id":2,"text":"bar"}]



  1. Read the file contents when the server starts (server/start.js):





Meteor.startup(function() {
console.log(JSON.parse(Assets.getText('test.json')));
});


However this seemingly very simple example does not log anything to the console. If I trye to store it in a variable instead on console.logging it and then displaying it client side I get

Uncaught ReferenceError: myjson is not defined


where myjson was the variable I stored it in. I have tried reading the JSON client side

Template.hello.events({
'click input': function () {
myjson = JSON.parse(Assets.getText("myfile.json"));
console.log("myjson")
});
}


Which results in:

Uncaught ReferenceError: Assets is not defined



  1. If have tried all of the options described here: Importing a JSON file in Meteor with more or less the same outcome.



Hope someone can help me out

Answer

The server method is OK, just remove the extra semi-colon(;). You need a little more in the client call. The JSON data comes from the callback.

Use this in your click event:

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

Meteor!