2017-05-31 54 views
0

我想要json流存儲在文本文件中。運行節點服務器時,json文件不會附加到json.txt文件。我錯過了什麼?是新的節點,所以,請溫柔..fs.write json文件捕獲並保存流式json文件

下面是一個代碼塊我希望能捕捉到JSON內容:

var fs = require('fs'); 
fs.writeFile("json.txt",{encoding:"utf8"}, function(err) { 
if(err) { 
console.log(err); 
} else { 
console.log("The file was saved!"); 
} 
}); 
+0

可能是[此問題]的副本(https://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) – Jthorpe

+0

可能的重複[如何追加到文件在節點?](https://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

回答

1

的問題是你沒有使用正確的參數。當調用fs.writeFile,預計一個字符串的文件名,一個緩衝器或字符串的內容,一個對象的選項回調函數。它看起來像你正在做的是發送選項作爲第二個參數,當它期望一個緩衝區或字符串。下面的更正;

var fs = require('fs'); 
fs.writeFile("json.txt", JSON.stringify({some: object}), {encoding:"utf8"}, function(err) { 
    if(err) { 
     console.log(err); 
    } else { 
     console.log("The file was saved!"); 
    } 
}); 

你可以用一些純文本替換JSON.stringify的一部分,如果你想,但你在你的問題中指定的JSON,所以我假設你想存儲一些對象在文件中

Source(的NodeJS文檔)

編輯:如果你想新的行添加到文件的末尾並沒有完全覆蓋舊的 在評論其他問題的聯繫會更貼近。不過,我假設fs.writeFile是預期的功能。如果不是意圖,與其他問題將有很大的幫助更

UPDATE:

看來這個問題是一個事實,即身體沒有被解析,所以當POST請求是經過,Node沒有請求體。爲了緩解這個,快遞配置過程中,需要下面的代碼:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 

採用NPM模塊body-parser。這會將JSON正文轉換爲JavaScript對象,並可通過req.body訪問。

+0

這種情況是,我正在從服務器監聽HTTP POST發佈JSON - 我想捕獲「原始JSON」並將其存儲在json.txt文件中。我已經稍微調整了腳本,使其爲:app.post('/ incomingPOST',function(req,res){ var obj = { 表:[] }; 變種JSONP = JSON.stringify(OBJ); 變種FS =需要( 'FS'); fs.writeFile(「json.txt」,jsonp,{flag:'a'},function(err){if(err){console.log(err); } else { console.log(「The file was saved!」); } }) });它正在附加一個帶有空JSON數據的文件。 – Antex

+0

我不確定發生了什麼事情。我在一個裸機測試應用程序上測試了您的確切代碼,它工作正常。它在我的項目根目錄下用'{「table」:[]}'創建了一個'json.txt'文件。如果您簡化了代碼,請嘗試共享您的內容,因爲您在評論中給出的示例適用於我。如果它沒有被簡化,那麼也許別的東西在干擾 – Chifilly

+0

我也一樣。而不是{「table」:[]} - 我想從服務器保存JSON。不完全確定應該爲什麼設置obj?我是初學者 - 對不起,如果這應該是顯而易見的。 – Antex