【问题标题】:Any way to write req object of callback route to a file in NodeJS?有什么方法可以将回调路由的 req 对象写入 NodeJS 中的文件?
【发布时间】:2017-11-09 12:20:59
【问题描述】:

我想要的只是在重定向到特定页面时将我的 req/res 对象记录到文件中(以便稍后我可以参考它来获取任何对象值)。

我试过这个:

app.get("/route", function(req, res) {
res.render("route");
fs.writeFile('./data.json', JSON.stringify(req, null, 2) , 'utf-8', function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("The file was saved!");
});

上面的代码是这样抛出错误:

TypeError: Converting circular structure to JSON at Object.Stringify (native)

有什么我应该做的不同的事情吗?任何帮助表示赞赏。 提前致谢。

【问题讨论】:

标签: javascript json node.js express middleware


【解决方案1】:

req 包含对res 对象的引用,res 包含对req 的引用,因此它确实是一个循环引用,其中 stringify 不起作用。

一个快速的解决方案可能是对要保存的属性更加挑剔。例如,将req.body 保存到文件中 - 只需对您真正需要的数据挑剔即可。


从长远来看,您应该考虑这是否是您真正想要的。文件 I/O 是“昂贵的”。您可能希望将数据放入数据库,或以某种方式将其保存在内存中。

【讨论】:

    【解决方案2】:

    你需要所有的 req-object 来保存吗?

    如果你应该只保存查询,试试这个:

    app.get("/route", function(req, res) {
         res.render("route");
         fs.writeFile('./data.json', JSON.stringify(req.query, null, 2), 
        'utf-8', function(err) {
             if(err) {
                  return console.log(err);
             }
        console.log("The file was saved!");
     });
    

    如果你想要任何额外的数据,首先创建一个新对象,并将这个数据分配给那个对象,然后使用JSON.stringify(yourObject, null, 2)

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 1970-01-01
      • 2017-08-31
      • 2017-03-10
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多