2016-07-25 7 views
0

これは、物事をよりよく理解するのに役立つ幾分理論的な質問です。Nodejs:単純なスケーリング

私は次のように人々がMongoDBのに情報を更新することを可能にするページがあります。

{name: john} 
{address: home} 
{email: [email protected]} 

をそして私は家族の中で他の人があまりにものような彼らの詳細を追加することを可能にするスクリプトがあります。

{name: sarah} 
{address: home} 
{email: [email protected]} 

次に、電子メール:[email protected]の誰でもデータベースにアクセスできるようにしたいと思います。

私の質問は、多くの家族が施設を使って家族の情報を見たり他の人に見せたりすることなく、家族の情報を見ることができるようにするための最も良い方法は何ですか?

私はmongo find関数を使用して、同じ電子メールドメインを持つドキュメントにユーザーがアクセスできるようにしていますが、それが良い方法であるかどうかは疑問です。

小規模な複数のユーザー設定の場合は、この推奨される方法ですか?私はかなり安全だが単純な解決策を探している。

お寄せいただきありがとうございます!

答えて

0

あなたは、一つのことを行いますが、家族の頭(または関係者)の詳細を格納するためのスキーマを作成することができマスタースキーマを作成し、家族スキーマで、すべての家族のメンバーのためにすることができますマスターアカウントと他のアカウントとの間のリンクを作成するこのような方法で、マスターのIDとそのデータを保存することができます。マスターアカウントに関連付けられているすべての家族を検索する場合は、単にdb.collection.find({master: masterId}, function(err, data){});を渡します。私はあなたが電子メールを使用するかのように、文字列を渡すのが少しコストがかかるような、より良いアプローチだと考えています。基本的にのobjectIdを使用すると、クエリの処理速度が速くなり、文字列になります。

これは、より安全で迅速なアプローチです。

0

家族のすべてのメンバーが一意の電子メールドメインを持ち、すべて同じドメインを使用していると仮定するのはむしろ限定的なようです。たとえば、私たちの家族は3つの異なるドメインに4つの異なる電子メールアカウントを持ち、2つのドメインはカスタムドメインではありません(gmail.comやyahoo.comなど)。

私はおそらくもっとうまくいくと思うのは、その家族のための "管理者"である家族を設定する最初の人を持つことです、そして、彼らは、(彼らの家族に)おそらく彼らが望むこの特定のデータセットに貢献することができるようにする。

したがって、各「アカウント」には1人のマスター管理者と、そのアカウントに寄付を許可された他のユーザーの一覧があります。それをデータベースで構造化するには、いくつかの異なる方法があります。

関連する問題