連絡先管理アプリでは、各ユーザーが独自のデータベースを持ちます。ユーザーが特定のカテゴリの連絡先を他のユーザーと共有したい場合、バックエンドがレプリケーションを開始します。各連絡先は独自のドキュメントですが、メモや予定などのさまざまな子ドキュメントもあります。
ここに例があります...
コンタクト:
{
"_id": 123,
"type": "contact",
"owner": "jimmy",
"category": "customer",
"name": "Bob Jones",
"email": "bob@example.com"
}
ノート:
{
"_id": 456,
"type": "note",
"owner": "jimmy",
"contact_id": 123,
"timestamp": 1383919278,
"content": "This is a note about Bob Jones"
}
たとえば、Jimmy が自分の唯一の顧客をセールス マネージャーの Kevin と共有し、個人の連絡先は非公開にしたいとします。メモがレプリケーション フィルターを通過すると、リンクされた連絡先のカテゴリ フィールドにアクセスできますか?
または、連絡先のすべての子でカテゴリ フィールドを複製する必要がありますか? 各連絡先には、カテゴリが変更されるたびに手動で更新する必要がある多くの子が含まれている可能性があるため、これを行う必要はありません。
フィルター関数の擬似コードを次に示します。
function(doc, req)
{
if(doc.type == “contact”) {
if(doc.category == req.query.category) {
return true;
}
}
else if(doc.contact_id) {
if(doc.contact.category == req.query.category) {
return true;
}
}
return false;
}
可能であれば、その方法を説明してください。ありがとう!