LowDB Code Reading
main.js
主入口点,里面先注册了一个自己的Lodash示例
  // Create a fresh copy of lodash
  const _ = lodash.runInContext()
  const db = _.chain({})
这里的chain创建了一个空的链式对象,从而让db继承了所有的lodash内置方法。
后面进一步改写了_.prototype,在上面加入了一些lowdb自己的方法,数据库的CRUD等等。
adapters/Base.js
这些Adapters是用来对接底层数据存储格式的。支持的包括File的Async,Sync,LocalStorage,Memory四种。
里面代码非常短,如下:
class Base {
  constructor(
    source,
    { defaultValue = {}, serialize = stringify, deserialize = JSON.parse } = {}
  ) {
    this.source = source
    this.defaultValue = defaultValue
    this.serialize = serialize
    this.deserialize = deserialize
  }
}
这里就是注册了一下一个接口(用Javascript的方式)。其实如果是Typescript,就可以直接操interface了,然后让这些Adapter实现这个接口。这里的实现略显Hack了一点。
adapters/FileSync.js
没什么好说的,非常暴力的包装,然后用了graceful-fs取代原有的fs。
序列化就是本质的JSON.stringnify和JSON.parse。
总结
那就是Lodash真好用。