経緯
Node.js を使っていて、ちょっとDB使いたいなーと思うこと、ありますよね。
で、 npm install sqlite3
とかやろうとするわけですよ。
そんで、Pythonとか入れてないから node-gyp で ERR になるわけですよ。
JavaScript 使いとしては node-gyp のめんどくささはとてもつらいです。
Python 2 と 3 の戦争に巻き込まれるのは御免ですしネイティブのビルドなんてまっぴらなんです。
なので、 Node.js で SQLite のようにアプリに内蔵してサクッと使える DB を探したところ、出てきたのが NeDB でした。
NeDB
SQLite やだーして出てきた NeDB さん。
どういう DB かというと、 組み込みで、永続化でもインメモリでも使えて、Node.js・nw.js・Electron・ブラウザーで動く 100% JavaScript でバイナリ依存が一切無い とのことです。
APIはMongoDBのサブセットで、十分に速いそうです。 (公式文章ほぼそのまま訳)
インストールは超簡単で、 Node.js ならほかの依存ライブラリと同様に
npm install nedb --save
するだけです。
使い方もサクッとやりたいことだけできます。
import * as Datastore from "nedb";
let db = new Datastore({ filename: "nedb.db", autoload: true });
db.insert({ hoge: "hoge", fuga: "fuga" }); // 適当なオブジェクトを保存
db.findOne({ hoge: "hoge" }, (err, document) => {
console.log(document); // 保存したオブジェクトが取り出せる
});
実際に使ってみたものがこちらになります。
Qiita の新着1万件の文字数 / ストック数を調べる簡単なプログラムですが、Qiita API のリクエスト結果を NeDB にガシガシ溜め込んで、再実行したときのリクエストを節約してみました。
こんな感じで、 NeDB は DB をサクッと使いたいときにとても便利なのではないでしょうか。