lowdb 中serialize deserialize
- serialize/deserialize: 文件被写之前和读之后的操作。
- 一段代码来解析
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('./db.json', {
serialize: (data) => console.log('serialize',data),// 注意这里是特意弄了console.log 不是JSON.stringity(data)
deserialize: (data) => console.log('deserialize',data)// 注意:这里不是 JSON.parse(data)
});
const db = low(adapter);
db.defaults({posts: [], user: {}, count: 30 }).write();
那么在命令行中运行下,
第一次被写入之前 serialize 打印 为 {} 空对象。
然后就执行 db.defaults 操作就会把对应的数据写入到 db.json 文件中,
然后我们就会执行 deserialize 操作对文件进行读取,
然后在命令行中会打印 { posts: [], user: {}, count: 30 }。
打印完成后,我们没有做任何操作后,最后我们再来查看下 db.json文件的内容变成了 undefined.
因此我们可以判定 serialize 和 deserialize 这两个操作完成后,他们也会对文件进行写入操作。
如果没有值被写入或操作的话,那么文件内容就变为undefined。
当文件变为undefined后,我们再执行上面的代码,可以看到 db.defaults({posts: [], user: {}, count: 30 }).write(); 这句代码是不会被写入的。
那么我们可以猜想的到,这句代码的含义是会判断该文件 有没有内容,如果没有内容的话文件数据才会被写入,否则的话就不会执行任何操作。
我们可以再把 db.json 文件内容全部删除掉,我们再运行下 node app.js 命令后,可以看到这个时候 数据才会被写入进去。
- serialize/deserialize: 文件被写之前和读之后的操作。
拆分:
serialize 文件写入前操作
deserizlize 文件写入后操作---
以上是博客的原文理解,看着比较乱
我的理解:
db.json 有内容,才会先读取,用deserialize
db.defaults ,是再db.json为空才会写入的,如果不为空,不会写入,
写入前调用serialize, log打出来,因为没有用 JSON.parse() 所以并没有真正写进去
-
当db.json 为空白, 仅仅会执行 serialize ,执行完,db.json 写入undefined
-
当db.json 有文字undefined,serialize 会执行,先执行deserialize , 再执行serialize
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2018-07-18 https://www.phpcomposer.com/
2018-07-18 PHP_INT_SIZE
2018-07-18 查看linux操作系统位数