将Express请求对象保存到文件

时间:2016-04-17 13:24:00

标签: node.js express stream

我正在尝试将Express请求对象传递给可写流。 NodeJS创建一个文件,但它是空的。我错过了什么?

var express = require('express');
var fs = require('fs');

var app = express();
    app.use(middleWare);
    app.listen(3000);

function middleWare(req, res, next){
    var ws = fs.createWriteStream('./test.txt');
    req.pipe(ws);
    res.sendStatus(200);
}

当我用 ws.write(req)替换 req.pipe(ws)时,我收到错误消息:

 TypeError: Invalid non-string/buffer chunk

当我用 ws.write(JSON.stringify(req))替换 ws.write(req)时,我收到错误消息:

  TypeError: Converting circular structure to JSON

1 个答案:

答案 0 :(得分:0)

您只能将字符串或缓冲区写入文件。

当您尝试使用JSON.stringify()将对象转换为字符串时,您会收到错误,因为该对象包含循环引用(不允许),以及您无法使用此函数的原因。

在将对象转换为字符串之前,您可以尝试将对象convert转换为JSON。

但是,在将它们转换为字符串之后,您还可以尝试仅提取请求的相关字段并将其保存到文件中。