2016-02-16 97 views
2

我需要一個流對象存儲爲一個字符串, 我試圖用JSON.stringify(stream),但我得到了以下錯誤:轉換流對象轉換爲字符串

TypeError: Converting circular structure to JSON 

,所以我試圖用「圓JSON」包裝是這樣的:

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

但訪問流寫入功能時,我得到一個錯誤 - o.write is not a function

如何將流對象存儲爲字符串,然後將它們解析爲原始對象後的 ?

+1

流通常有數據,你必須使用事件處理程序讀取數據。這個流從哪裏來? – tier1

+0

您是否嘗試過讀取流的對象模式選項? –

+0

tier1 - 它是來自包ssh2的流。 simon-p-r - 我如何使用對象模式來解決問題? –

回答

2

流不包含原始數據作爲對象的一部分。相反,他們發出的數據是您可以聽到的'data'事件的一部分。訂閱該流的.on事件,當它發出數據時,您可以將其附加到字符串並獲取所有數據。

'end'事件中,您已完成所有數據的讀取,因此您可以使用'end'事件回調中的數據執行某些操作。

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

是的,但我需要存儲實際的流,而不是數據。任何想法如何? –

+0

@markvolrap你不能存儲流...他們是短暫的。存儲流是什麼意思? –

+0

我想分享跨多個服務器的流對象,我想通過使它成爲一個字符串然後解析它回到一個對象與redis做到這一點。 –