orientdb匹配多个可能的边缘

时间:2017-09-22 11:03:01

标签: match orientdb

我目前正在调查使用OrientDB来实施授权系统,并且我在使用边缘箭头表示法时遇到了一些问题。

图表有四种不同的顶点类型:

  • 用户
  • 作用
  • 资源

四种不同的边缘类型:

  • IN_GROUP
  • HAS_ROLE
  • CAN_ACCESS
  • INHERITS

结构是:

  • 用户-IN_GROUP->组
  • 组-HAS_ROLE->作用
  • 角色-CAN_ACCESS->资源
  • 角色-INHERITS->作用

角色可以继承其他角色。这意味着角色A可以继承可以继承角色C的角色B.我想生成一个东方查询,可以说“对于特定用户,给我他们所有的角色,包括他们继承的任何角色&#39; < / p>

目前为了获得角色继承角色,我这样做但它只检索第一级继承节点: match {class:User, where:(name='Sean')} -IN_GROUP-> {class:Group} -HAS_ROLE-> {} -INHERITS-> {class:Role, as:role} return role.name

我试图检索的是这个初始角色继承的整个节点链,有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你需要的是INHERITS关系中的WHILE条件:

var arrayOfCheckboxes = ['checbox1', 'checkbox2'];
var angularSpy;
var elementFunction = function(e){ return anyMockedElement; }
var domCheckBoxes = {
   find: function(searchString){
      if(string === 'input[type="checkbox"]:checked'){
           return arrayOfCheckboxes;
      }
   }
}
var anyMockedElement = {
    parents: function(string) {
        if(string === 'checkbox'){
           return domCheckBoxes;
        }
    }
}

beforeEach(function() {
    angularSpy = spyOn(angular, 'element').andCallFake(elementFunction);   
});

afterEach(function() {
    angularSpy.andCallThrough();
});