如何将对象写入流?

Ros*_*nko 1 stream node.js

我正在尝试将一个对象写入流:

const fs = require('fs');

const stream = fs.createWriteStream('index.json', {objectMode: true});
stream.write({"a":1});

stream.end();
Run Code Online (Sandbox Code Playgroud)

根据文档,我可以通过传递选项来做到这一点{objectMode: true},但我收到错误:

events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: Invalid data
    at WriteStream._write (fs.js:2116:31)
    at doWrite (_stream_writable.js:385:12)
    at writeOrBuffer (_stream_writable.js:371:5)
    at WriteStream.Writable.write (_stream_writable.js:288:11)
    at Object.<anonymous> (/Users/rostik404/projects/test-project/test-stream.js:8:8)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
Run Code Online (Sandbox Code Playgroud)

节点版本是8.4.0

rob*_*lep 5

objectMode仅适用于支持它的流,而fs流则不支持(它们不知道将对象序列化为什么

您可以在写入数据之前将其字符串化:

stream.write(JSON.stringify({"a":1}));
Run Code Online (Sandbox Code Playgroud)

或者,可能使用JSONStream(但是,这是否有用取决于您的用例)。