这是我的示例图
var min = 0;
var hour = 0;
var timer = true;
alert("Testing Timer");
do{
sec += 10; //Needs to pause for 5 secs after this line
console.log(sec);
if(sec >= 60){
alert("It's " + hour + " : " + min + " : " + sec);
min += 5;
sec = 0;
if(min >= 60)
{
hour += 1;
min = 0;
}
}
}while(timer === true);```
我如何编写一个gremlin查询来检查'user1'的权限是否对f3具有权限?
以下查询可以在不通过继承属性检查父文件夹权限的给定文件夹中获取对用户或其组之一的直接访问权限。
g.addV('user').property('userId','user1').as('u1').
addV('user').property('userId','user2').as('u2').
addV('user').property('userId','user3').as('u3').
addV('group').property('groupId','group1').as('g1').
addV('group').property('groupId','group2').as('g2').
addV('group').property('groupId','group3').as('g3').
addV('folder').property('folderId','folder1').property('inheritance',false).as('f1').
addV('folder').property('folderId','folder2').property('inheritance',true).as('f2').
addV('folder').property('folderId','folder3').property('inheritance',true).as('f3').
addV('file').property('fileId','file1').
addE('in_folder').to('f1').
addE('in_folder').from('f2').to('f1').
addE('in_folder').from('f3').to('f2').
addE('member_of').from('u1').to('g1').
addE('member_of').from('u2').to('g2').
addE('member_of').from('u3').to('g3').
addE('member_of').from('g3').to('g1').
addE('has_permission').from('g1').to('f1').
addE('has_permission').from('u2').to('f1').iterate()
答案 0 :(得分:2)
不使用过滤器,而是继续遍历:
g.V().has('user', 'userId', 'user1').emit().repeat(out('member_of'))
.out('has_permission').emit().repeat(__.in('in_folder').has('inheritance',true))
.has('folder', 'folderId', 'folder3')
.path().unfold().valueMap()
我们首先以递归方式获取所有组成员身份。 然后获取用户及其组可以访问的所有资源。 然后以递归方式遍历所有继承的资源。 最后,过滤所需的资源。 仅当您要查看允许访问的关系时,才需要最后一行。