質問
最近 CouchDB に興味を持ち、それを中心とした小さなアプリケーションを作成してみたいと思いました。
私が現在システムを招待する方法は、リクエストが ID、API キー、フォーマットの 2 つを提供することです。ID はデータベース内のドキュメントの _id で、API キーは {"valid" のプロパティを持つ別のドキュメントの _id です。true/false} であり、その形式はユーザーが返したい形式です。API キーが有効な場合、システムは指定された ID の表示ページを要求された形式で生成します。それ以外の場合は、403 統計コードが返されます。
残念ながら、表示ページから別のドキュメントを取得する方法が見つかりません。私は CouchDB を始めたばかりなので、単純な何かが欠けているかもしれません。
解決
とともに _show
関数には、次の 3 つの部分が関係します。
- 設計書
- 設計ドキュメント内の show 関数
- 追加で提示される書類
URL形式については /db/_design/ddoc/_show/my_show_func/otherdoc
:
- 設計書は、
_design/ddoc
- ショー機能は、
shows.my_show_func
その設計文書内で - 表示されるドキュメントには、
_id
のotherdoc
それらは、 のみ 関係する書類は2つ。あなたが説明したことを行う唯一の方法は、API キーごとに設計ドキュメントを作成することです。ユーザーはクエリを実行します /db/_design/API_KEY/_show/other_doc_id
. 。CouchDB はリラックスしています。同一または類似した何千もの設計ドキュメントに問題はありません。 _show
機能。HTTPを使用できます COPY
必要に応じて、基本設計ドキュメントを新しい API キーに複製するメソッド。その後、設計ドキュメントを削除することで API キーを取り消すことができます。ただし、これは明らかにユニークなアプローチであるため、もう一度考えてみる価値があります。
最後の考慮事項は、(デフォルトの CouchDB、リバース プロキシなし、mod_security などの場合) ユーザーが 1 つのドキュメントを読み取ることができれば、データベース全体 (例:から _all_docs
したがって、show 関数はソフトウェアにとって便利ですが、セキュリティ ゲートウェイではありません。