首页 > 解决方案 > 如何重写成json文件nodejs?

问题描述

我有一个网站,用户可以在其中添加帖子。

我正在尝试将每个发布请求的详细信息添加到data.json文件中。

每次用户添加帖子时,我都想将所有帖子(新)再次写入data.json文件,但现在只写最后一篇帖子,没有之前的所有帖子。

任何想法?

const posts = {};

app.post("/posts", (req, res) => {
const id = randomBytes(4).toString("hex");

var dt = new Date().toLocaleDateString("en-US");

const { title } = req.body;
const { postBody } = req.body;

posts[id] = {
id,
title,
postBody,
dt,
};

console.log(posts);

fs.writeFile('data.json', JSON.stringify(posts, null, 2), function (err) {
 if (err) throw err;
 console.log('Saved!');
});


res.status(201).send(posts[id]);

});

例如,而不是

{
 '63ca17ec': { id: '63ca17ec', title: 'cd', postBody: '', dt: '12/1/2020' },
 '7a680f01': { id: '7a680f01', title: 'dc', postBody: '', dt: '12/1/2020' }
}

我明白了

{
 '63ca17ec': { id: '63ca17ec', title: 'cd', postBody: '', dt: '12/1/2020' }
}

标签: node.js

解决方案


你需要

  1. 打开data.json读+写。
  2. 阅读 的内容data.json
  3. 通过 . 将其转换为 javascript 对象/数组JSON.parse()
  4. 将数据项添加到该对象/数组。
  5. 最后,用于fs.write()在偏移量 +0(文件开头)处写入文件。
  6. 关闭文件。

推荐阅读