• 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() 所以并没有真正写进去
    
  • 相关阅读:
    帮助你生成分享和显示社交媒体网络按钮的jQuery插件 #50C1AL java程序员
    Storyboard多View的切换 [xcode 4.4.1]
    ObjectiveC Enum 枚举数据类型解析
    在IOS中使用KeychainItemWrapper保存用户名和密码实现记住密码功能
    10个迷惑新手的Cocoa&Objectivec开发问题
    关于分类(category)和类的扩展(extensions)的验证
    解决mac创建的压缩包,window下解压乱码的问题
    xcode快捷键大全
    解决Shockwave flash在chrome浏览器上崩溃的问题
    嵌入式内核与文件系统烧写
  • 原文地址:https://www.cnblogs.com/pansidong/p/16490260.html
Copyright © 2020-2023  润新知