附加到 nodejs 中的 csv 文件(使用 csv-write-stream)

新手上路,请多包涵

我目前正在使用 csv-write-stream 将内容写入 csv 文件:

 var fs = require('fs');
var csvWriter = require('csv-write-stream')

var writer = csvWriter()
writer.pipe(fs.createWriteStream('out.csv'))
writer.write({hello: "world", foo: "bar", baz: "taco"})
writer.end()

我喜欢这是多么容易。但是,这总是会创建一个新文件。我怎么能附加一些东西到这个文件?我什至可以使用同一个库吗?

原文由 Peter Zacharias 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 781
2 个回答

实际上, fs.createWriteStream 函数决定如何打开 'out.csv'

在您的情况下,您可以使用 a 标志打开此文件进行添加:

 writer.pipe(fs.createWriteStream('out.csv', {flags: 'a'}))

这是此 功能标志 的文档。

原文由 idmitme 发布,翻译遵循 CC BY-SA 3.0 许可协议

也许晚了,但对于遇到与我相同问题的人 Error: no headers specified

   if (!fs.existsSync(finalPathFile))
    writer = csvWriter({ headers: ["header1", "header2"]});
  else
    writer = csvWriter({sendHeaders: false});

  writer.pipe(fs.createWriteStream(finalPathFile, {flags: 'a'}));
  writer.write({
    header1:"hello",
    header2:"world",
  });
  writer.end();

这个概念代表当你第一次访问文件时,你设置了标题,这样它就可以被其他后端软件(如 Excel)读取。之后,当您稍后再次访问该文件时,您不会设置标题。但请记住, 每次写入文件时,都需要设置要写入的列。然后你会得到你想要的结果,它是这样的:

 header1,header2
John,5th avenue,
Richard,St. Jorge street

原文由 James 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题