2011-01-31 7 views
4

Couchdbに新しいユーザーを追加するときに、追加のプロファイルフィールドを同じドキュメントに追加するのが適切ですか?Couchdb:_userドキュメントにユーザープロファイル属性を追加する

私は、_usersドキュメントに含まれているものを補うためにユーザープロファイルを持つ別のデータベースを持つことができますが、_usersドキュメントのデザインは静的であるか、ユーザードキュメントにフィールドを追加することはできますか?

答えて

3

_usersデータベースは、ユーザーに関する情報を保存するのに最適な場所です。ドキュメントのデザインはリラックスしているので、フィールドを追加する心配はありません。 (いくつかを削除すると、しかし、危険な可能性があります。)あなたはすべてのデータのためのドキュメント内のオブジェクトを追加することを検討できます。

{ "_id": "org.couchdb.user:jhs" 
, "_rev": "3-281e87af31d7d8277463732dccc06f65" 
, "name": "jhs" 
, "type": "user" 
, "roles": ["whatever"] 
// (etc.) 
, "myapp": 
    { "profile_photo": "http://example.com/some_photo.png" 
    , "favorite_color": "blue" 
    } 
} 

あなたがチェックしたい一つのことは_design/_authvalidate_doc_update機能です。あなたが必要とすることをするのを妨げないようにしてください。現時点では(おそらく無期限に)、文書内の属性(必要であれば、typenamerolesなど)をチェックしません。

これらのドキュメントは世界中で読めることを覚えておいてください。ユーザーごとのプライベートデータは、ユーザーごとのプライベートデータベースに格納する必要があります。

+0

私が理解しているように、Readerユーザーまたはロールをデータベースに割り当てると、_usersデータベースは世界的に読めるわけではありません。この場合、管理者権限を持つユーザー、または「名前」配列にロールまたは特定の名前のリーダーを持つユーザーのみがデータベースを読み取ることができます。 – steveolyo

+0

これは間違いありませんが、ユーザーがアカウントを作成するには、データベースを世界中で読めるようにする必要があります。匿名アカウントの作成が不要な場合は、アカウントを閉じることができます。それでも、ユーザーが自分の文書を見ることができれば、他のすべてのユーザーの文書を見ることができます。 – JasonSmith

関連する問題