我希望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!");
}
});
答案 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
访问。