如何将变量的内容写入fs.writeFile

时间:2018-04-08 18:37:48

标签: javascript node.js https fs

我对Node.js和编码很新,但我一直在努力 将名为parsed的变量的值写入EarthquakeAdapter

有没有办法做到这一点,因为无论何时我运行它都会创建txt文件,但它有fs.writeFile()

如果这没有任何意义,我提前道歉:

[object Object]

1 个答案:

答案 0 :(得分:0)

[object Object] 是从对象到字符串的默认转换。请注意,您的代码的以下部分 -

res.on('data', data => {
    body = data.toString();
});

每次为 body 变量指定一个不同的值(覆盖前一个值)。您要做的是在 body 变量上附加每个'data'事件的新数据块。

至关重要的是要理解你没有把你的数据作为一个完整的部分,你把它作为一个流:在每个'on'事件上你只得到它的一部分(并且只在'结束'事件你会将它作为一个整体)因此将它解析为部分完整的数据片段并没有多大意义。

您可以在完成加载时解析数据(在“结束”事件中),但是,因为您无论如何都将响应写入文件,您可以将响应保留为字符串,您没有或不需要无论如何解析它。

我建议改为:

const https = require('https');
const fs = require('fs');

const url =
  "https://api.openweathermap.org/data/2.5/weather?zip=${zip},us&APPID=${config.key}";

function yourFunc(zip, config) {
  https.get(url, res => {
    let result = '';

    res.on('data', data => {
      result += data;
    });

    res.on('end', () => {
      fs.writeFile('data.text', result);
    });
  });
}