Webアプリケーションと言えばデータベースが肝です。しかし一般的にデータベースと言えばサーバサイドにあるもので、それはオフラインでは使えません。そのための解決手段としてlocalStrageもありますが、KVSではまた使い勝手が変わってきます。IndexedDBを使うのがベストですが、そうそう簡単ではないでしょう。 そこで使ってみたいのがPouchDBです。PouchDBはクライアントサイドのJavaScriptで動作するデータベースで、サーバとの同期機能が備わっています。

PouchDBの使い方

サンプルです。下のコンソールにおいてdbオブジェクトはサーバサイドとつながっています。

データベース操作はPromiseに対応しています。

ローカルのIndexedDBにデータ保存されています。

データを保存してみたところ。これはオフライン状態でローカルに保存されています。

オンラインになり自動同期が行われました。サーバ側にも自動反映されています。

PouchDBを使う簡易的なコードは以下のようになります。

var db = new PouchDB('dbname');

db.put({
  _id: 'dave@gmail.com',
  name: 'David',
  age: 67
});

db.changes().on('change', function() {
  console.log('Ch-Ch-Changes');
});

db.replicate.to('http://example.com/mydb');

ローカルのDBを開いてデータを保存しつつ、それをサーバサイドのDBに同期します。データベースはCouchDBを想定しています。テキストだけでなく、画像などのファイルも保存できます。PouchDBをメインとしつつ、定期的にサーバサイドと同期するサービスなんてのも作れてしまいそうです。

PouchDBはJavaScript製、Apache License 2.0のオープンソース・ソフトウェアです。

PouchDB, the JavaScript Database that Syncs! pouchdb/pouchdb