【基础篇】js对本地文件增删改查--增
前置条件:
项目目录:

1. msg.json内容
{
"data": [
{
"id": 1,
"name": "aa"
},
{
"id": 2,
"name": "bb"
},
{
"id": 3,
"name": "cc"
},
{
"id": 4,
"name": "dd"
}
],
"total": 4
}
2. add.js
// 若找不到该模块,则用npm i fs命令安装一下即可
var fs = require('fs'); var params = {
"id":5,
"name":"ee"
}
//写入json文件选项
function addData(params){
//现将json文件读出来
fs.readFile('data/msg.json',function(err,data){
if(err){
return console.error(err);
}
var msg = data.toString(); //将二进制的数据转换为字符串
msg = JSON.parse(msg); //将字符串转换为json对象
msg.data.push(params); //将传来的对象push进数组对象中,此处用的模拟数据parms,以后从页面获取数据
msg.total = msg.data.length; //刷新一下总数,以后分页会用上
console.log(msg.data);
var str = JSON.stringify(msg); //因为nodejs的写入文件只认识字符串或者二进制数,因此进行必要的转换
fs.writeFile('./data/msg.json',str,function(err){
if(err){
console.error(err);
}
console.log('----------新增成功-------------');
})
})
} //执行新增数据方法;
addData(params)
3. 用node执行add.js,效果如下图:


可以发现,数据已插入。但是有个问题,数据变成一行了,这样可读性很差。我们需要在add.js中进行一点修改,如下
//因为nodejs的写入文件只认识字符串或者二进制数,因此进行必要的转换。另外,此种写法可以美化写入的json样式
var str = JSON.stringify(msg,"","\t");
重新执行app.js,可以发现,写入的json已经是我们期待的样子。

【因为此处并未做数据校验,因此执行了2次,插入了两条相同的数据。这个小坑之后再填】
【基础篇】
【参考资料】
前人栽树后人乘凉,敬编程界的先行者!
https://www.cnblogs.com/eliteboy/p/13272030.html
【基础篇】js对本地文件增删改查--增的更多相关文章
- hibernate关联对象的增删改查------增
本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...
- Sqlserver 增删改查----增
注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常 ...
- Ajax增删改查-----------增
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php 数据库内容增删改查----增
首先,建立一个主页面(crud.php) <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 【基础篇】js对本地文件增删改查
[基础篇] js对本地文件增删改查--增 js对本地文件增删改查--删 js对本地文件增删改查--改 js对本地文件增删改查--查
- 【基础篇】js对本地文件增删改查--查
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- 【基础篇】js对本地文件增删改查--改
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- 【基础篇】js对本地文件增删改查--删
前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...
- MongoDB学习笔记,基础+增删改查+索引+聚合...
一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...
随机推荐
- 局域网内部怎么安全接入U盘?
准备工具: 内部专用U盘一个: 能连接外网的电脑(暂称"安全机")一个. 第一.安全机上安装360杀毒.360安全卫士或其它安全软件.并经常更新病毒库.木马库. 第二.外来U盘先通 ...
- JUC之线程池基础与简单源码分析
线程池 定义和方法 线程池的工作时控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完成,再从队列中取出任 ...
- Cesium中级教程5 - Terrain 地形
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ CesiumJS支持对与水流相关的海洋.湖泊和河流以及全球高分辨 ...
- 用 CSS 让你的文字更有文艺范
透明文字,模糊文字,镂空文字,渐变文字,图片背景文字,用 CSS 让你的文字也有 freestyle- 前言 我们做页面涉及字体的时候,最多就是换个 color 换个 font-family,总是觉得 ...
- docker和K8s对应参数
创建 Pod 时设置命令及参数 创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数.如果要设置命令,就填写在配置文件的 command 字段下,如果要设置命令的参数,就填写在配置文件的 ...
- Java多线程专题2: JMM(Java内存模型)
合集目录 Java多线程专题2: JMM(Java内存模型) Java中Synchronized关键字的内存语义是什么? If two or more threads share an object, ...
- ABC231H(二分图最小权边覆盖)
首先将行列分别抽象成 \(h, w\) 个点,每个格子视作连接两个点的一条边,那么问题就转化为了二分图最小权边覆盖问题. 考虑最后答案形如:若干组互不相交的匹配加上其他点连接到匹配内. 于此同时,不在 ...
- AT3913 XOR Tree
经过长时间的思考,我发现直接考虑对一条链进行修改是很难做出本题的,可能需要换一个方向. 可以发现本题中有操作的存在,是没有可以反过来做的做法的,因此正难则反这条路应该走不通. 那么唯一的办法就是简化这 ...
- AT2164 [AGC006C] Rabbit Exercise
首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...
- java的四种引用:强软弱虚
简介 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于(reachable)可达状态,程序才能使用它. 从JDK 1.2版本开始,对象的引 ...