Javascript fs.write json文件以捕获和保存流式json文件

Javascript fs.write json文件以捕获和保存流式json文件,javascript,node.js,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!"); } })

我希望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!");
}
});

问题是您没有使用正确的参数。调用
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,所以我假设您想在文件中存储一些对象

(NodeJS文档)

编辑: 如果您希望在文件末尾添加新行,而不是完全覆盖旧行,则注释中指向其他问题的链接可能更相关。然而,我假设
fs.writeFile
是预期的功能。如果这不是目的,那么这些其他问题将帮助更多

更新:

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

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

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

访问它。可能的情况是,我正在从发布JSON的服务器收听HTTP POST,我想捕获“原始JSON”,并将其存储在JSON.txt文件中。我对您的脚本做了一些调整:app.post('/incomingPOST',function(req,res){var obj={table:[]};var jsonp=JSON.stringify(obj);var fs=require('fs');fs.writeFile(“JSON.txt”,jsonp,{flag:'a'},function(err){if(err){console.log(文件已保存);}) }); 它正在附加一个包含空JSON数据的文件。我不确定到底发生了什么。我在一个简单的测试应用程序上测试了你的代码,效果很好。它在我的项目根目录下创建了一个
json.txt
文件,其中包含
{“table”:[]}
。如果你简化了代码,试着分享你所拥有的,因为你在评论中给出的例子对我很有用。如果它没有被简化,那么也许其他的东西是相同的。我希望保存来自服务器的JSON,而不是{“table”:[]}。不确定应该设置什么obj来实现这一点?我是这方面的新手-如果这应该是显而易见的,我很抱歉。好的,我明白了。因此,在发布JSON时,您希望将请求主体保存到一个文件中。我想我知道你的问题(有几次我被发现了)。当您声明express并执行其所有设置时,请确保您有
app.use(bodyParser.json())。这将把POST请求的主体转换为JSON。您将需要此模块。然后,您将能够使用
req.body
访问请求主体,它将是一个JavaScript对象。如果这解决了问题,我将更新我的答案。您需要在字符串化之前比较机密,因为当您字符串化时,它会将JSON转换为字符串,或者您可以对完整的
req.body.data.secret
进行比较(但前者可能是可读性更强的代码)