如何在express node.js中将对象req data转换为字符串

3

我想将在app.get('/')中的req(请求)数据保存到某个地方。会出现“TypeError: Converting circular structure to JSON”错误。

var express = require('express')
var app = express()
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: false}))
app.get('/', (req, res) => {
   var string = JSON.stringify(req);
   saveRequest(string)
   res.send("OK")
})
function saveRequest(){
    //...
}

您知道 req data 转为字符串吗?我已经尝试过以下代码

app.get('/', (req, res) => {

   var string = objToString(req);
   saveRequest(string)
   res.send("OK")

})
function objToString (obj) {
    var str = '';
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + '::' + obj[p] + '\n';
        }
    }
    return str;
}

出现了 "TypeError: Cannot convert object to primitive value" 错误。

1个回答

7

我不确定为什么您想要保存整个请求对象,但是有一些可用的Node模块可以安全地对包含循环引用的对象进行字符串化,例如json-stringify-safe

以下是一个示例:

let app = require('express')();
let port = process.env.PORT || 3000;
let stringify = require('json-stringify-safe');

app.get('/', (req, res) => {
    console.log(stringify(req));
    res.send("Ok");
})

app.listen(port, () => {
    console.log("Listening on " + port);
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接