【问题标题】:Node - Write JSON result to a file after a promise节点 - 承诺后将 JSON 结果写入文件
【发布时间】:2017-12-28 04:58:18
【问题描述】:

我正在使用 request-promise 从 api 获取数据。我需要将结果写入 json 文件。以下代码不会向文件写入任何内容。

var rp = require('request-promise');
rp(empOptions)
    .then(function (repos) {
        employees= repos;
        return new Promise(function(resolve, reject) {
            fs.writeFile('../employees.json', JSON.stringify(employees), function(err) {
                if (err) reject(err);
            });
        });
    })
    .catch(function (err) {
        // API call failed...
    });

我也试过this,但也没有成功。

【问题讨论】:

  • 你检查过 repos 是否在你的.then 方法中包含数据吗?
  • 是的,它包含数据。
  • 尝试删除 return new Promise。无论如何,您不会使用 Promise 的 resolve 方法返回数据。 fs.writeFile 在这种情况下应该自己工作。
  • 已经试过了,还是不行。
  • 您是否尝试过类似var stringifiedJSON = JSON.stringify(employees); 的方法,然后将stringifiedJSON 变量传递给fs.writeFile() 方法?

标签: javascript json node.js request-promise


【解决方案1】:

在文件上书写的最佳简便方法:

.then(function(results) {
    return new Promise(function(resolve, reject) {
        fs.appendFileSync('myurlss2.json', results, function(err) {
            if (err) reject(err)
            else resolve(results)
        })
    })
})
.then(function(results) {
    console.log("results here: " + results)
})
.catch(function(err) {
    console.log("error here: " + err)
});

【讨论】:

  • 完整代码:.then(function(results) { return new Promise(function(resolve, reject) { fs.appendFileSync('myurlss2.json',results, function(err) { if (err ) reject(err); else {resolve(results); } }); }); }).then(function(results) { console.log("results here: " + results) }).catch(function(err ) { console.log("这里的错误:" + err); });
  • 与其在注释中添加代码,不如编辑答案,
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
相关资源
最近更新 更多