fs.write json文件捕获并保存流式json文件

时间:2017-05-31 16:00:53

标签: javascript node.js

我希望json流存储在文本文件中。运行节点服务器时,json文件不会附加到json.txt文件。我错过了什么?对节点来说是新手,所以要温柔......

这是我希望捕获json内容的代码块:

var fs = require('fs');
fs.writeFile("json.txt",{encoding:"utf8"}, function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});

1 个答案:

答案 0 :(得分:1)

问题是您没有使用正确的参数。在调用fs.writeFile时,它需要一个字符串作为文件名,一个缓冲区或内容字符串,一个对象的选项回调函数。您正在做的是在期望缓冲区或字符串时将选项作为第二个参数发送。以下更正;

var fs = require('fs');
fs.writeFile("json.txt", JSON.stringify({some: object}), {encoding:"utf8"}, function(err) {
    if(err) {
        console.log(err);
    } else {
        console.log("The file was saved!");
    }
});

如果您愿意,可以用一些纯文本替换JSON.stringify部分,但是您在问题中指定了JSON,因此我假设您想将某个对象存储在文件中

Source(NodeJS文档)

修改 如果要在文件末尾添加新行而不是完全覆盖旧行,则注释中其他问题的链接可能更相关。但是我假设fs.writeFile是预期的功能。如果这不是意图,那些其他问题将有更多帮助

<强>更新

似乎问题在于身体没有被解析,所以当POST请求通过时,Node没有请求体。为了缓解这种情况,在快速配置期间,需要以下代码:

var bodyParser = require('body-parser');
app.use(bodyParser.json());

使用npm模块body-parser。这会将JSON主体转换为JavaScript对象,并且可以通过req.body访问。