节点 - 承诺后将 JSON 结果写入文件

Posted

技术标签:

【中文标题】节点 - 承诺后将 JSON 结果写入文件【英文标题】:Node - Write JSON result to a file after a promise 【发布时间】: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() 方法? 【参考方案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); ); 与其在注释中添加代码,不如编辑答案,

以上是关于节点 - 承诺后将 JSON 结果写入文件的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将数据写入本地 json 文件,除了角度之外啥都没有?

将远程 JSON 结果写入本地文件

jmeter-结果数据写入指定文件

Gradle - 将任务输出写入文件

Python3 解析 XML

使用 Node.js 将 json 文件写入 Firebase?