以独特的方式从多个文件中获取JSON数据

在我的服务器上有几个包含JSON数据的文件。 我想通过一个GET请求来接收这些文件中包含的数据。

现在我的代码如下所示:

app.get('/json', function(req, res){ fs.readFile(__dirname + '/file01.json', function(err, content){ var data01 = content; }); fs.readFile(__dirname + '/file02.json', function(err, content){ var data02 = content; }); res.send({file01: data01, file02: data02}); }); 

我知道这是绝对不是这样做的,文件仍然被读取响应发送时,我不知道是否data01和data02全局定义。

但是,那么做什么呢?

我应该使用stream吗? 我应该使用多个res.write()来代替吗? 开导我。

非常适合async.parallel

 var async = require('async'); app.get('/json', function(req, res) { var work = { file01: async.apply(fs.readFile, __dirname + '/file01.json'), file02: async.apply(fs.readFile, __dirname + '/file02.json') }; async.parallel(work, function (error, results) { if (error) { res.status(500).send(error); return; } //might need string->Object here results['file01'] = JSON.parse(results['file01']); results['file02'] = JSON.parse(results['file02']); res.send(results); }); }); 

使用每个readFile的callback来执行下一个操作:

 fs.readFile(__dirname + '/file01.json', function(err, content){ var data01 = content; //Might be smart to do some err checking here //if (err) send error //else read the next file fs.readFile(__dirname + '/file02.json', function(err, content){ //if (err) again var data02 = content; res.send({file01: data01, file02: data02}); }); });