3 回答

TA贡献1826条经验 获得超6个赞
如果您从现有文件中读取并使用 解析它JSON.parse,您将能够实际使用Array.push它。然后你可以将字符串化的结果写回到文件中:
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条经验 获得超7个赞
使用 fs.readFileSync 读取文件。
然后,我将这个原始数据存储在一个变量中,同时将其解析为 JSON。
然后,我将其推送到“jsonBook”变量中,该变量是临时制作成简单对象变量的 json 文件。
然后我用 writeFile 写入文件,将数据作为变量“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条经验 获得超7个赞
我很欣赏你的简单尝试但是使用一些标准对你来说会更好
有一些用于 Node 的标准 JSON DB,例如: Simple JSON DB Node JSON DB 另外,您可以尝试 SQLite 我也尝试使用一个简单的 JSON 文件作为 DB。我面临着很多工作,我也做到了。所以我的建议是使用一些标准库
除此之外,您必须获取文件数据将其解析为 JSON(解码)进行更改,然后再次将其序列化并写入文件(编码)。
添加回答
举报