2016-03-18 3 views
2

Ich bin neu in Node.js und JavaScript. Ich habe eine results.json Datei, die ich ein laufendes Protokoll der Ergebnisse von einem Skript behalten möchte, das Bilder aus dem Web zieht. Mein aktuelles Skript überschreibt jedoch nur das vorhandene Ergebnis. Wie kann ich auf der results.json aufbauen oder hinzufügen, damit jedes nachfolgende Ergebnis in der Datei results.json protokolliert wird? Ich möchte, dass es gültig ist, json. HierWie füge ich zu einer vorhandenen JSON-Datei in node.js hinzu

ist allgemeines Beispiel:

var currentSearchResult = someWebSearchResult 
var fs = require('fs'); 
var json = JSON.stringify(['search result: ' + currentSearchResult + ': ', null, "\t"); 
fs.writeFile("results.json", json); 

Und die results.json:

[ 
    "search result: currentSearchResult" 
] 
+0

Mögliche Duplikat von [Wie in einer Datei in Knoten anhängen?] (Http://stackoverflow.com/questions/3459476/how-to -append-to-a-file-in-node) – peteb

+0

Soll die resultierende Datei gültige JSON enthalten? Wenn dem so ist, reicht es nicht aus, nur an die Datei anzuhängen. –

+0

@KevinB Ja, das wäre ideal, aber ehrlich gesagt bin ich nicht sicher, ob Append die richtige Terminologie ist, also habe ich meine Frage bearbeitet. – filmplane

Antwort

5

Wenn Sie die Datei als gültig JSON wollen, müssen Sie Ihre Datei öffnen, die JSON zu analysieren, fügen Sie Ihr neues Ergebnis in das Array, verwandeln es in eine Zeichenkette und speichern Sie es erneut.

var fs = require('fs') 

var currentSearchResult = 'example' 

fs.readFile('results.json', function (err, data) { 
    var json = JSON.parse(data) 
    json.push('search result: ' + currentSearchResult) 

    fs.writeFile("results.json", JSON.stringify(json)) 
}) 
+0

json.push() ??? –

+0

'json'ist ein Array, und Sie können ein neues Element mit' .push' an ein Array anhängen. –

+0

In diesem Beispiel ist "json" kein Array tho –

0

Im Allgemeinen Wenn Sie anhängen möchten Datei sollten Sie verwenden:

fs.appendFile("results.json", json , function (err) { 
    if (err) throw err; 
    console.log('The "data to append" was appended to file!'); 
}); 

Datei anhängen erstellt Datei, falls nicht vorhanden.

Wenn Sie jedoch zuerst JSON-Daten anhängen möchten, lesen Sie die Daten und danach können Sie diese Daten überschreiben.

fs.readFile('results.json', function (err, data) { 
    var json = JSON.parse(data); 
    json.push('search result: ' + currentSearchResult);  
    fs.writeFile("results.json", JSON.stringify(json), function(err){ 
     if (err) throw err; 
     console.log('The "data to append" was appended to file!'); 
    }); 
}) 
+0

Um zu verdeutlichen, möchte ich keine Daten überschreiben. Ich möchte zu vorhandenen Ergebnissen zusätzliche Daten hinzufügen – filmplane

+0

@filmplane Das erste Beispiel Daten anfügen, ohne gültige JSON. Das zweite Beispiel hängt auch Daten an, aber die json-Struktur wird nicht zerstört. –

1

Sie können Bunyan verwenden. Das ist

eine einfache und schnelle JSON Protokollierung Bibliothek

Verwandte Themen