node.js - 如何重写成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' }
}
解决方案
你需要
- 打开
data.json
读+写。 - 阅读 的内容
data.json
。 - 通过 . 将其转换为 javascript 对象/数组
JSON.parse()
。 - 将数据项添加到该对象/数组。
- 最后,用于
fs.write()
在偏移量 +0(文件开头)处写入文件。 - 关闭文件。
推荐阅读
- firebase - 在颤振中,匿名登录会持续多长时间?
- azure - 使用 CircleCI 部署到 Azure VM
- wordpress - 如何从wordpress中复选框动作的总数中减去金额
- r - 使用 R 'Data Table' 进行以下计算
- ubuntu - 在 Ubuntu 18.04 上编译 Intel I219V 以太网卡
- angular - 如何在动态模板驱动表单的输入中添加默认值
- php - 如何在 php 中获取 SimpleXMLElement 对象到数组
- javascript - 反应样式/组件未显示(MS Fabric UI)
- python - 如何使用 Altair 创建嵌套的分组条形图?- 添加了样本数据
- vba - 使用 vba 更改数据透视表中的值字段设置时获取 #n/a