将流对象转换为字符串

4
我需要将一个流对象存储为字符串,我尝试使用JSON.stringify(stream),但是出现了以下错误:
TypeError: Converting circular structure to JSON

我尝试使用“circular-json”包,如下所示:

var o = CircularJSON.parse(CircularJSON.stringify(stream))

但是当访问流写入函数时,我收到了一个错误 - o.write 不是一个函数

如何将流对象存储为字符串,并稍后解析为原始对象?


1
流通常具有必须使用事件处理程序从中读取的数据。这个流来自哪里? - tier1
你尝试过使用对象模式选项来读取流吗? - simon-p-r
tier1 - 这是来自ssh2包的流。simon-p-r - 我如何使用对象模式来解决这个问题? - mark volrap
不确定是否可以使用ssh2模块,请参考此文章,其中展示了对象模式下的流。 - simon-p-r
2个回答

3

流对象中不包含原始数据。相反,数据被作为 'data' 事件的一部分发出,您可以监听这些事件。订阅流的 .on 事件,当它发出数据时,您可以将其附加到字符串中并获取所有数据。

'end' 事件上,您已经完成了对所有数据的读取,因此可以在 'end' 事件回调函数中处理数据。

let data = '';
stream.on('data', chunk => data += chunk);
stream.on('end', doSomethingWithData);

是的,但我需要存储实际流,而不是数据。你有什么想法吗? - mark volrap
@markvolrap 你不能存储流(streams)...它们是短暂的。你所说的存储流指的是什么? - Explosion Pills
我想在多个服务器之间共享流对象,我正在尝试使用Redis将其转换为字符串,然后再解析回对象。 - mark volrap
@markvolrap 你不能这样做。如果流正在尝试从一个文件系统中读取数据呢?这些服务器可能不共享一个文件系统。 - Explosion Pills

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接