0

I have a json string (coming from my Rails app):

http://localhost:3000/employees/1.json

How do I get my Node.js app to consume this data?

This is the code I have in my Node.js app right now:

var employees = JSON.parse("http://localhost:3000/employees.json")

This is the error I'm getting:

prompt$ node app.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
SyntaxError: Unexpected token h
    - at Object.parse (native)
    - at Object. (/Documents/Coding/dustin/employees.js:19:22)
    - at Module._compile (module.js:441:26)
    - at Object..js (module.js:459:10)
    - at Module.load (module.js:348:31)
    - at Function._load (module.js:308:12)
    - at Module.require (module.js:354:17)
    - at require (module.js:370:17)
    - at Object. (/Documents/Coding/dustin/app.js:34:17)
    - at Module._compile (module.js:441:26)
Kev
  • 118,037
  • 53
  • 300
  • 385
rzv
  • 2,022
  • 18
  • 22

1 Answers1

0

See this question:

Using Node.JS, how do I read a JSON object into (server) memory?

You should read the file first and then parse it.

var employees = JSON.parse(fs.readFileSync('employees.json', 'utf8'));

If for some reason your Rails app runs on some other machine, you need to make a http request for that. You could try this:

var site = http.createClient(port, host);

var request = site.request("GET", pathname, {'host' : host});
request.end();

request.on('response', function(response) {
  var json = '';

  response.on('data', function(chunk) {
    json += chunk;
  });

  response.on('end', function () {
    employees = JSON.parse(json);
  });
});
Community
  • 1
  • 1
mihai
  • 37,072
  • 9
  • 60
  • 86
  • Okay, here is what confused me. The ('employees.json', 'utf8') part...I don't have a JSON file, I have a JSON string that can be accessed here: http://localhost:3000/employees/1.json – rzv Apr 15 '12 at 22:43
  • ok that means you have to communicate with your rails app with a http request, like I mentioned in the second approach. – mihai Apr 16 '12 at 08:54