2017-09-22 5 views
0

私は現在、OrientDBを使用して認証システムを実装していますが、私は辺の矢印の表記に問題があります。orientdb複数の可能な辺に一致する

グラフは、4つの異なる頂点の種類があります。

  • ユーザー
  • グループ
  • 役割
  • リソース

そして、四つの異なるエッジタイプ:

  • IN_GROUP
  • HAS_ROLE
  • CAN_ACCESSは

を継承し、構造は次のとおりです。

  • ユーザー-IN_GROUP->グループ
  • グループ-HAS_ROLE->ロール
  • 役割-CAN_ACCESS->リソース
  • ロール-INHERITS->ロール

ロールは他のロールを継承することがあります。これは、ロールAがロールCを継承するロールBを継承する可能性があることを意味します。「特定のユーザーに対して、継承したものを含め、すべてのロールを私に与えてください」と言うことができるオリエントクエリーを作成します。

現在私はこれをやっている役割を継承したロールを得るが、それは唯一の継承されたノードの最初のレベルを取得します。 match {class:User, where:(name='Sean')} -IN_GROUP-> {class:Group} -HAS_ROLE-> {} -INHERITS-> {class:Role, as:role} return role.name

私が取得しようとしている何、この最初の役割が継承するノードのチェーン全体で誰も私を助けることができますこれでどうですか?あなたがここに必要なもの

答えて

0

はINHERITS関係上WHILEの条件である:

match 
    {class:User, where:(name='Sean')} -IN_GROUP-> 
    {class:Group} -HAS_ROLE-> {} -INHERITS-> {class:Role, as:role, while:(true)} 
return role.name 
関連する問題