将文件作为json传输到expressjs和res
快速提问,伙计们。我想我把逻辑搞糟了,但我搞砸了,因为express没有管道方法 不管怎样,我有这个作为我的快速端点将文件作为json传输到expressjs和res,json,node.js,express,stream,pipe,Json,Node.js,Express,Stream,Pipe,快速提问,伙计们。我想我把逻辑搞糟了,但我搞砸了,因为express没有管道方法 不管怎样,我有这个作为我的快速端点 app.get('/:report/top', function(req, res) { readDataTop(global[req.params.report], function(err, obj) { res.header("Cache-Control", "max-age=3600"); res.json(obj); }); }); 目
app.get('/:report/top', function(req, res) {
readDataTop(global[req.params.report], function(err, obj) {
res.header("Cache-Control", "max-age=3600");
res.json(obj);
});
});
目前我正在做这件事,以获取数据
function readDataTop (x, callback) {
console.log("Read "+x[6]+" and Sent Cached Top Half");
jf.readFile( "loadedreports/top"+x[6], 'utf8', callback);
};
jf只是让编写json.parse和try/catch块变得更容易,我不想只使用fs.readfile,我想打开一个流,因为这些文件越来越大
我如何通过管道将内容表达出来,但仍然使用json?
像这样的
function readDataTop (x, callback) {
console.log("Read "+x[6]+" and Sent Cached Top Half");
var rstream = fs.createReadStream("loadedreports/top"+req.params.report+".json");
rstream.pipe(callback);
};
有什么想法吗?Req未定义,但我认为我正确地通过了管道?你所做的没有意义。要点是:回调需要内存中的整个文件/对象,因此也必须更改。如果你想要溪流,那么你需要一路溪流。您可以使用另一个流来代替回调,该流将在一行/数据/结果出现时处理一行/数据/结果,通过管道将其传输到另一个流,该流可以进行写入或聚合等操作。因此,我必须通过管道将其传输到writestream,并让express侦听数据事件?那么在每一个数据事件上,express res.json是哪一行呢?这会给我完整的json作为一个对象吗?我基本上希望节点读取文件,将其流式传输,以表示在ajax请求下哪个节点将其流式输出。客户端应该只看到一个JSON对象正在加载,当它被完全接收时,就对它做些什么。可能吗?