节点 - 承诺后将 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 结果写入文件的主要内容,如果未能解决你的问题,请参考以下文章