このプロジェクトについて
lowdbは、JavaScriptとTypeScript向けの小さくミニマルなローカルJSONデータベースです。その核となる考え方は、JavaScriptを知っていれば使い方もわかるというものです。データはdb.dataのプレーンなオブジェクトに保存され、カスタムクエリ言語ではなく、ネイティブの配列やオブジェクト操作でクエリや変更を行います。
一般的な使い方では、JSONファイルを読み込むか作成し、2つのステップ(db.dataを変更してからawait db.write()を呼ぶ)またはdb.update(fn)による1回の呼び出しで更新します。結果のdb.jsonは通常のJSONです。TypeScriptユーザーはData型を宣言できるため、db.dataが型チェックされ、文字列配列に数値をプッシュするなどのミスを防げます。
このパッケージは純粋なESMで、npm install lowdbでインストールします。一般的なケース向けに4つのプリセット(JSONFilePreset、JSONFileSyncPreset、LocalStoragePreset、SessionStoragePreset)を提供しています。より細かく制御するには、LowクラスとLowSyncクラス、およびアダプタを公開しています。組み込みアダプタには、JSONファイル用のJSONFileとJSONFileSync、テスト中の高速なインメモリ使用向けのMemoryとMemorySync、ブラウザ向けのLocalStorageとSessionStorageがあります。ユーティリティアダプタのTextFile、TextFileSync、DataFile、DataFileSyncは、カスタムアダプタの構築に役立ちます。例えば、YAMLのサポートや、parse関数とstringify関数を提供して暗号化や圧縮を追加できます。
アダプタはreadメソッドとwriteメソッドを公開するシンプルなクラスなので、リモートストレージや他の形式を対象にできます。READMEでは、チェーンクエリのためにLodashでLowを拡張する方法も示しています。文書化された制限として、lowdbはNodeのclusterモジュールをサポートせず、大きなオブジェクト(約10〜100MB)の書き込みは、各db.writeがJSON.stringifyでdb.data全体をシリアライズするため遅くなる可能性があります。バッチ操作や必要なときだけ書き込むことでこれを軽減でき、より大規模な用途にはREADMEがPostgreSQLやMongoDBを推奨しています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.