3 回答

TA貢獻1826條經(jīng)驗 獲得超6個贊
如果您從現(xiàn)有文件中讀取并使用 解析它JSON.parse,您將能夠?qū)嶋H使用Array.push它。然后你可以將字符串化的結(jié)果寫回到文件中:
fs.readFile("./views/scripts/dataVisitorBook.json", function (err, data) {
if (err) throw err;
let data = JSON.parse(data.toString('utf8'));
data = JSON.stringify(data, null, 2);
fs.writeFile("./views/scripts/dataVisitorBook.json", data, { { // dataVisitorBook.json is the storage file
flag:'a' // this flag specify 'please append it' over 'please override file'
}
}, (err) => {
console.log('error :', err)
});
})
它可能不是最佳的,因為隨著文件變大,它可能需要更多時間。

TA貢獻1846條經(jīng)驗 獲得超7個贊
使用 fs.readFileSync 讀取文件。
然后,我將這個原始數(shù)據(jù)存儲在一個變量中,同時將其解析為 JSON。
然后,我將其推送到“jsonBook”變量中,該變量是臨時制作成簡單對象變量的 json 文件。
然后我用 writeFile 寫入文件,將數(shù)據(jù)作為變量“parsed”傳遞,其中包含我的“jsonBook”的 JSON.stringified 版本
app.post("/visitorBook", async (req, res) => {
let formData = {
name: req.body.name,
msg: req.body.msg,
emoji: req.body.emoji,
};
try {
let rawdata = fs.readFileSync("./views/scripts/dataVisitorBook.json");
var jsonBook = JSON.parse(rawdata);
let formDataParsed = JSON.stringify(formData, null, 2);
jsonBook.push(formData);
let parsed = JSON.stringify(jsonBook, null, 2);
fs.writeFile("./views/scripts/dataVisitorBook.json", parsed, (err) => {
if (err) throw err;
console.log("saved");
});
res.redirect("/contact");
} catch (error) {
console.error("/visitorBook route error : ", error);
}
});
我希望我說得很清楚。也許我做了一些解釋錯誤,我正在盡力而為。

TA貢獻1852條經(jīng)驗 獲得超7個贊
我很欣賞你的簡單嘗試但是使用一些標準對你來說會更好
有一些用于 Node 的標準 JSON DB,例如: Simple JSON DB Node JSON DB 另外,您可以嘗試 SQLite 我也嘗試使用一個簡單的 JSON 文件作為 DB。我面臨著很多工作,我也做到了。所以我的建議是使用一些標準庫
除此之外,您必須獲取文件數(shù)據(jù)將其解析為 JSON(解碼)進行更改,然后再次將其序列化并寫入文件(編碼)。
添加回答
舉報