node.js - NodeJs 中的 fs 转储等价物?

标签 node.js csv dump fs csv-write-stream

目标

强制 fs(和使用它的库)在终止应用程序之前将所有内容写入文件。

背景

我正在使用 npm 包将对象写入 CSV 文件 csv-write-stream .

库完成 CSV 文件的写入后,我想使用 process.exit() 终止我的应用程序。

代码

为了达到上述目的,我写了以下内容:

let writer = csvWriter({
  headers: ['country', 'postalCode']
});

writer.pipe(fs.createWriteStream('myOutputFile.csv'));

//Very big array with a lot of postal code info
let currCountryCodes = [{country: Portugal, postalCode: '2950-286'}, {country: Barcelona, postalCode: '08013'}];

for (let j = 0; j < currCountryCodes.length; j++) {
  writer.write(currCountryCodes[j]);
}

writer.end(function() {
  console.log('=== CSV written successfully, stopping application ===');
  process.exit();
});

问题

这里的问题是,如果我执行 process.exit(),库将没有时间写入文件,文件将为空。

由于库使用fs,我解决这个问题的方法是在NodeJs中强制执行fs.dump()或类似的东西,但经过搜索,我发现没有相似之处。

问题

  1. 如何在退出应用程序之前强制 fs 将所有内容转储(推送)到文件中?
  2. 如果第一个选项不可行,有没有办法等待应用程序写入然后关闭它?

最佳答案

我认为你的猜测是正确的。 当您调用 process.exit() 时,管道写入流尚未完成写入。

如果你真的想明确地终止你的服务器,这就可以了。

let r = fs.createWriteStream('myOutputFile.csv');
writer.pipe(r);

...

writer.end(function() {
  r.end(function() {
    console.log('=== CSV written successfully, stopping application ===');
    process.exit();
  });
});

关于node.js - NodeJs 中的 fs 转储等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830616/

相关文章:

java - 当我运行 Java 程序时,我的 intellij-idea-ultimate-edition 总是转储

php - R 中 var_dump() 的等价物是什么?

node.js - Discord Bot 数据库 (JAVASCRIPT)

javascript - unhandledRejection 不可分配给信号类型的参数

python - 读取大型 CSV 并将其分割成更小的 block

python - 使用 "chunksize"和/或 "iterator"用 Pandas 打开选定的行

java - 如何编写可分析的线程转储格式

node.js - 即使我添加了安全组,也无法在特定端口上访问 EC2

node.js - 检查集合中是否存在元素的最有效方法

python - 从 csv 文件中删除某些列与特定正则表达式匹配的行