私はCouchDBでサービスを構築することを始めました。このアプリは、ユーザーがいくつかの理由で無制限のバケットを持つように設計されており、完全に機能しました。いくつかのエンタープライズ機能のために、Couchbase に切り替えました。私は PouchDB を使用しているため、Sync Gateway が必要です。残念ながら、1 つのバケット/データベースしかマッピングできません。
これは私にとって完璧な解決策です: /db/bucket/etc
これを達成する方法はありますか?
私はCouchDBでサービスを構築することを始めました。このアプリは、ユーザーがいくつかの理由で無制限のバケットを持つように設計されており、完全に機能しました。いくつかのエンタープライズ機能のために、Couchbase に切り替えました。私は PouchDB を使用しているため、Sync Gateway が必要です。残念ながら、1 つのバケット/データベースしかマッピングできません。
これは私にとって完璧な解決策です: /db/bucket/etc
これを達成する方法はありますか?
Couchbase Server バケットは任意のデータを保持できます。Sync Gateway にとって、Couchbase Server バケットはストレージ エンジンの宛先にすぎず、ユーザーやデータ アクセスとは関係ありません。Sync Gateway 構成ファイルでは、異なるバケットに保持されている複数のデータベースを一覧表示できます。
{
"databases":{
"db1": {
"server": "http://localhost:8091",
"bucket": "db1bucket"
},
"db2": {
"server": "http://101.88.47.22:8091",
"bucket": "db2bucket"
}
}
}
ここで、構成ファイルでデータベースを 1 つだけ宣言し、ユーザーに特定のドキュメントへのアクセスを許可したいとします。認証方法の 1 つを使用して、それに基づいて、ドキュメントをチャネルにルーティングし、ユーザーにそれらのチャネルへのアクセスを許可する同期関数を記述できます。チャンネルはその場で作成され、作成できる数に制限はありません。ユーザー認証を使用してチャネル内のドキュメントにアクセスしたくない場合は、クライアント側のレプリケータにチャネル名を指定できます (これは簡単です)。
推奨されるアプローチは、ユーザーごとではなく、プロジェクトまたはアプリケーションごとに 1 つの同期ゲートウェイ データベースを使用することです。そのため、ドキュメントを異なる CouchDB データベースから 1 つの Sync Gateway データベースに移行する必要がある場合があります。