这篇文章讲解的是 node 而不是浏览器,浏览器有 storage 和 cookie,但是 node 这些东西都没有。

node 中实现数据的持久化的多种方法如下:

1、文件系统 fs

2、数据库

•关系型数据库 mysql•文档型数据库 mongodb•键值的对数据库 redis

文件系统就是通过 fs 模块进行操作,这种方式简单便捷,模块直接就可以使用无需安装。

//实现一个文件系统读取数据库
const fs = require("fs");
function get(key) {fs.readFile("./db.json", (err, data) => {const json = JSON.parse(data);console.log(json[key]);});
}function set(key, value) {//可能是空文件, 则设置为空对象const json = data ? JSOJN.parse(data) : [];json[key] = value; //设置值fs.writeFile("./db.json", JSON.stringify(json), (err) => {if (err) {console.log(err);}console.log("写入成功");});
}

关系型数据库 mysql 模块的基本使用,需要先 install 安装 mysql 模块。

//mysql.js
const mysql = require("mysql");
//链接配置
const cfg = {host: "localhost",user: "root",password: "example",database: "kkk", //确保数据库存在
};
//创建连接对象
const conn = mysql.createConnection(cfg);
//链接
conn.connect((err) => {if (err) {throw err;} else {console.log("connect success");}
});//查询 conn.query()
//创建表
const CREATE_SQL = `CREATE TABLE IF NOT EXISTS TEST(id INT  NULL AUTO_INCREMENT,message VARCHAR(45) NULL,PRIMARY KEY (id))`;
const INSERT_SQL = `INSERT INTO test(message) VALUES(?)`;
const SELECT_SQL = `SELECT * FROM test`;
conn.query(CREATE_SQL, (err) => {if (err) {throw err;}//conn.query(INSERT_SQL, "hellow,world", (err, result) => {if (err) {throw err;}console.log(result);conn.query(SELECT_SQL, (err, result) => {console.log(result);conn.end(); //若query语句有嵌套,则end需要在此执行});});
});

基于 Promise 的 ORM,支持多种数据库、事物、关联等。sequelize 模块的基本使用,这种方式需要安装 sequelize 模块。

(async () => {const Sequelize = require("sequelize");// 建⽴连接const sequelize = new Sequelize("kaikeba", "root", "example", {host: "localhost",dialect: "mysql",operatorsAliases: false,});// 定义模型const Fruit = sequelize.define("Fruit", {name: { type: Sequelize.STRING(20), allowNull: false },price: { type: Sequelize.FLOAT, allowNull: false },stock: { type: Sequelize.INTEGER, defaultValue: 0 },});let ret = await Fruit.sync();console.log("sync", ret);ret = await Fruit.create({name: "⾹蕉",price: 3.5,});console.log("create", ret);ret = await Fruit.findAll();await Fruit.update({ price: 4 }, { where: { name: "⾹蕉" } });console.log("findAll", JSON.stringify(ret));const Op = Sequelize.Op;ret = await Fruit.findAll({// where: { price: { [Op.lt]:4 }, stock: { [Op.gte]: 100 } }where: { price: { [Op.lt]: 4, [Op.gt]: 2 } },});console.log("findAll", JSON.stringify(ret, "", "\t"));
})();

Redis 是一种支持 key-value 等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。

node中的数据持久化相关推荐

  1. Docker中容器数据持久化-数据卷的简单使用

    场景 Ubuntu Server 16.04 LTS上使用Docker部署Tomcat: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...

  2. 【求助】Android开发中的数据持久化

    为什么80%的码农都做不了架构师?>>>    描述: 目前有A,B,C,D,E,F,G,H七个activity. 程序首先进入A,A里面主要有一个list,点击item跳转,跳转逻 ...

  3. iOS中常用的四种数据持久化方法

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults s ...

  4. zookeeper专题:zookeeper的节点类型,数据持久化机制

    文章目录 1. zookeeper的安装 2. zookeeper的节点类型 3. zookeeper命令解析 4.zookeeper的监听通知机制 5. zookeeper的常规配置 6. zook ...

  5. redis的基本操作And数据持久化方式以及redis实现mybatis缓存

    Redis 1.NoSql # NoSql(Not Only Sql),不仅仅是sql,泛指非关系型数据库 2.NoSql的诞生 随着互联网web2.0网站的兴起,传统的关系型数据库在高并发和特大规模 ...

  6. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别

    前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...

  7. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探

    文章目录 内存数据 源码实现 事务日志 配置项 查看事务日志数据 LogFormatter 写入日志的优化 (预分配) 数据快照 查看数据快照数据 SnapshotFormatter 事务日志 VS ...

  8. 四种数据持久化方式(上) :属性列表与归档解档

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹. iOS开发中 ...

  9. 漫游Kafka设计篇之数据持久化

    转载注明出处:http://blog.csdn.net/honglei915/article/details/37564595 Kafka视频教程同步首发,欢迎观看! 不要畏惧文件系统! Kafka大 ...

最新文章

  1. 【亲测有效】如何安装屏幕录制工具ScreenPresso
  2. python 循环批量生成变量
  3. Javascript+xmlhttp调用Webservice
  4. C/C++左值性精髓(二)哪些表达式是左值,哪些是右值?----右值表达式
  5. Ubuntu18 的日常
  6. java 基础编程题 5
  7. swoole mysql 连接数_用swoole简单实现MySQL连接池
  8. VC++ COleSafeArray VARIANT的使用
  9. 如何在经济危机中寻找崛起之道
  10. 桌面弹球游戏终结,含有全部代码
  11. 138.复制带随机指针的链表
  12. 查看oracle已使用表空间,查看Oracle的表空间的使用情况
  13. Structure from Motion Using OpenCV
  14. vb access mysql数据库教程_vb操作access数据库的方法
  15. 8051单片机驱动TM1620任意字符循环显示程序(详细注释版)
  16. 2020级训练赛10.23
  17. android中Uri.parse()用法,调用电话短信浏览器等
  18. 【转】win7 uac关闭
  19. 测试用例编写练习(二)
  20. Keli5 打开Cypress CY7C68013A(51单片机)官方开发包例程

热门文章

  1. 几步教你用 Python 制作一个 RPA 机器人!
  2. 对话指令集创始人兼CEO潘爱民:面向未来的新型物联网操作系统 | 人物志
  3. Java 11 升级:“债务”“危机”
  4. 一文详解 SpringBoot 多数据源中的分布式事务
  5. 他51岁,给卫星写代码:彪悍的人生,从来不怕晚!
  6. 一件程序员必备武器的诞生
  7. 知乎“下沉”,快手“上游”
  8. 漫画:如何给女朋友解释什么是编译与反编译
  9. 真壕!腾讯员工平均月薪 7 万!
  10. 重磅!Facebook 更新 PyTorch 1.1,打算跨 GPU 分割神经网络 | 技术头条