2016-10-18 9 views
0

私のデータベースには2つのメインノードがあります。ユーザープロジェクトです。NoSQLとFirebase:多対多関係を格納して反復する

各ユーザーは、異なる役割の複数のプロジェクトに割り当てることができます。

多くの関係に多くを構築する方法について読んだ後、私はそれは次のようになりますことを終わった:私は把握できなかった何

users : { 
    user1 : { 
    name : blah, 
    email : [email protected], 
    projects : { 
     projects1key : true, 
     projects2key : true 
    } 
    } 
} 

projects : { 
    project1key : { 
    name : blahserve, 
    category : blahbers, 
    providers : { 
     user1 : true, 
     user7 : true 
    } 
    } 
} 

は、私は、すべてのユーザーがそれぞれに役割を割り当てることができる方法ですプロジェクト。

  1. 新しいデータベース構造は、私はプロジェクト内の各ユーザーにrole(文字列)を追加する必要がある場合のようになります何ですか?

  2. 私が間違っていると私を修正します:ユーザーをプロジェクトに割り当てるとき、2つの新しいノードを作成する必要があります。ユーザーノードのプロジェクトキーノードとプロジェクトキーノードのユーザーキーノード。そうですか?リストの上に

    • (1)反復処理:更新

      ここで与えられた答えが正解ではなく、それは私のユースケースに合うと確信しているので

が、これは私のユースケースであります(2)すべてのプロジェクトプロジェクトのリストを反復する

  • (3)ユーザーがプロジェクトにアクセスしたときのプロジェクトの役割を確認する彼の役割に応じて権限を与えてください。
  • (4) "プロジェクト - >ユーザー"ページでは、既存のプロジェクトに新しいユーザーを追加できます。ユーザロールは、ユーザと一緒に同じ形式で選択されます。ユーザーは、プロジェクト内で役割がである必要があります。
  • 答えて

    2

    それともただ単にあなたがすべて一緒に別のノードを追加することができます: -

    新しいデータベース構造は、私はプロジェクト内の各ユーザにロール(文字列)を追加する必要がある場合のようになります何ですか?

    users : { 
    user1 : { 
        name : blah, 
        email : [email protected], 
        } 
        }, 
    
    projects : { 
        projectKey1 : { 
        name : blahserve, 
        category : blahbers, 
        } 
    }, 
    
    projectsLists:{ 
    
        user1 :{ 
        projectKey1 : true, 
        projectKey2 : true 
        } 
    }, 
    
    projectsRoles :{ 
    
        projectKey1 : { 
        user1 : provider, 
        user2 : editor, 
        .... 
        } 
        } 
    

    私が間違っているなら、私を修正してください:私のprojectkeynodeの私のユーザノードにおけるprojectkeyノード、およびUSERKEYノードを:私はプロジェクトにユーザーを割り当てると、私は2つの新しいノードを作成する必要があります。そうですか?

    常にフラットなDB構造を選択してください。したがって、この構造を使用すると、ユーザーの役割を一度追加または更新するだけで済みます。

    +0

    大変ありがとうございます。この構造上の反復がどのように見えるかについての例を挙げられますか?例:https://www.firebase.com/docs/web/guide/structuring-data.html#section-join – TheUnreal

    +0

    コメントでの質問の拡張は避けてください。自分で試してみることをお勧めします。 SOに関する別の質問。確かにsum1があなたを助けます...また、depracated firebaseのドキュメントには次のものを使用しています:-https://firebase.google.com/docs/ :) Happy Coding – Dravidian

    +0

    本当にありがとうございます。あなたの答えはちょうど1つの質問です:なぜあなたはproject1/user1ではなくuser1/projectkey1を使用するのですか? (プロジェクト中のユーザはinderユーザのプロジェクトになります) – TheUnreal