2016-04-17 3 views
0

Ich versuche, Express-Anfrage-Objekt zu einem beschreibbaren Stream zu pipen. NodeJS erstellt eine Datei, die jedoch leer ist. Was vermisse ich?Express-Anfrageobjekt in eine Datei speichern

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); 
} 

Als ich req.pipe (ws) ersetzen mit ws.write (erf) ich einen Fehler:

TypeError: Invalid non-string/buffer chunk 

Wenn ich ws.write ersetzen (erf) mit ws.write (JSON.stringify (req)) Ich erhalte eine Fehlermeldung:

TypeError: Converting circular structure to JSON 
+0

Dies ist eine sehr ungewöhnliche Sache zu tun, 'req' Objekt ist in der Regel nicht in eine Datei geschrieben werden soll. Was versuchst du damit eigentlich? – laggingreflex

+0

@laggingreflex, ich möchte die Request-Objektstruktur näher betrachten. Ich kann das nicht in der Konsole machen, weil die Ausgabe das Maximum überschreitet und ich nicht bis ganz nach oben scrollen kann. –

+0

[console.dir oder util.inspect können größere Tiefen anzeigen] (http://stackoverflow.com/questions/10729276/how-can-i-get-the-full-object-in-node-js-console-log -rather-than-object/27534731 # 27534731), aber [Knoten-Debugger mit Chrom-Inspektor könnte hilfreicher sein] (https://mattdesl.svbtle.com/debugging-nodejs-in-chrome-devtools). – laggingreflex

Antwort

0

Sie können nur eine Zeichenfolge oder einen Puffer in eine Datei schreiben.

Wenn Sie versuchen, das Objekt in einen String mit JSON.stringify() zu konvertieren, erhalten Sie einen Fehler, weil das Objekt zirkuläre Referenzen enthält, die nicht zulässig ist, und der Grund, warum Sie diese Funktion nicht verwenden können.

Sie könnten versuchen, convert das Objekt zu JSON, bevor Sie es in eine Zeichenfolge konvertieren.

Sie können jedoch auch versuchen, nur die relevanten Felder der Anfrage zu extrahieren und in die Datei zu speichern, nachdem Sie sie in eine Zeichenfolge konvertiert haben.

+0

Vielen Dank! Ich habe ein NPM-Modul [CircularJSON] (https://github.com/WebReflection/circular-json) für die Konvertierung verwendet. Alles funktioniert gut! –

Verwandte Themen