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真好用。