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

标签 javascript node.js https fs

我对 Node.js 和一般编码相当陌生,但我正在尝试 将名为 parsed 的变量的值写入 fs.writeFile()

有什么方法可以做到这一点,因为每当我运行它时,它都会创建 txt 文件,但它有 [object Object]

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

https.get(`https://api.openweathermap.org/data/2.5/weather?zip=${zip},us&APPID=${config.key}`, res => {

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

    res.on('end', () => {
        const parseData = JSON.parse(body);
        fs.writeFile('data.txt', parsedData)
        console.log(parsed_data);
    });

});

module.exports = wrappedAll;

最佳答案

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

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

每次为 body 变量分配不同的值(覆盖之前的值)。您想要做的是在每个“数据”事件上向 body 变量附加一个新数据 block 。

重要的是要了解,您不会将数据作为一个完整的片段获取,而是将其作为流获取:在每个“on”事件中,您仅获得其中的一部分(并且只有在“end”事件中,您才会将其作为一个整体),因此将其解析为部分完整的数据片段并没有真正的意义。

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

我建议改为执行以下操作:

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);
    });
  });
}

关于javascript - 如何将变量的内容写入 fs.writeFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49721391/

相关文章:

javascript - 创建一个随机数数组 返回最高数 Javascript

javascript - 我现在有多行字符串,我想打印包含特定子字符串的那些行

PHP 数组到 JavaScript 数组

java - 使用自签名证书时 Tomcat 服务器未发生 SSL/TLS 通信

facebook - 如何最好地将 fb-comments 从 http 移动到 https

ios - 是否可以将 Voip 推送证书和 APN 推送证书连接成一个证书以用于常规推送或 Voip 推送?

javascript - 散点图的线条正确,但线条上的点已沿 y 轴翻转

node.js - 如何修复 eslintrc 文件与您的项目配置不匹配?

正则表达式等价

node.js - 为什么 MongoDB 无法连接到我的 NodeJS 应用程序?