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

问题描述:

我想要json流存储在文本文件中。运行节点服务器时,json文件不会附加到json.txt文件。我错过了什么?是新的节点,所以,请温柔..fs.write json文件捕获并保存流式json文件

下面是一个代码块我希望能捕捉到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

可能是[此问题]的副本(https://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) – Jthorpe

+0

可能的重复[如何追加到文件在节点?](https://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

的问题是你没有使用正确的参数。当调用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是预期的功能。如果不是意图,与其他问题将有很大的帮助更

UPDATE:

看来这个问题是一个事实,即身体没有被解析,所以当POST请求是经过,Node没有请求体。为了缓解这个,快递配置过程中,需要下面的代码:

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

采用NPM模块body-parser。这会将JSON正文转换为JavaScript对象,并可通过req.body访问。

+0

这种情况是,我正在从服务器监听HTTP POST发布JSON - 我想捕获“原始JSON”并将其存储在json.txt文件中。我已经稍微调整了脚本,使其为:app.post('/ incomingPOST',function(req,res){ var obj = { 表:[] }; 变种JSONP = JSON.stringify(OBJ); 变种FS =需要( 'FS'); fs.writeFile(“json.txt”,jsonp,{flag:'a'},function(err){if(err){console.log(err); } else { console.log(“The file was saved!”); } }) });它正在附加一个带有空JSON数据的文件。 – Antex

+0

我不确定发生了什么事情。我在一个裸机测试应用程序上测试了您的确切代码,它工作正常。它在我的项目根目录下用'{“table”:[]}'创建了一个'json.txt'文件。如果您简化了代码,请尝试共享您的内容,因为您在评论中给出的示例适用于我。如果它没有被简化,那么也许别的东西在干扰 – Chifilly

+0

我也一样。而不是{“table”:[]} - 我想从服务器保存JSON。不完全确定应该为什么设置obj?我是初学者 - 对不起,如果这应该是显而易见的。 – Antex