【发布时间】:2019-08-11 14:15:26
【问题描述】:
我正在使用 arangodb 构建权限系统。
我想使用子查询来确定图遍历的起始节点。这是我尝试过的
FOR vert IN 1..5
OUTBOUND (
FOR v, e, p IN 1..2
OUTBOUND 'users/jill'
GranterGrant, GrantGrantee
FILTER e.edgeType == 'GrantGrantee'
AND v.type == 'User'
AND v._id == 'users/jim'
LIMIT 1
RETURN p.vertices[1]
)
RolePrivilege, GrantRole, GrantPrivilege
FILTER vert.type == 'Privilege'
AND vert._id == 'privileges/JournalRead'
LIMIT 1
RETURN vert._id
内部查询是为了找到从jill到jim的权限授予节点,外部查询确定是否存在从授予节点到权限JournalRead的路径
子查询在单独运行时工作,并返回一个我想用作外部查询起始节点的顶点。如果我对起始节点进行硬编码,则外部查询有效。
但是,当我运行上面的整个查询时,arango 会响应
Warnings:
[10], 'Invalid input for traversal: Only id strings or objects with _id are allowed'
Result:
[]
注意,我还在子查询中尝试了RETURN p.vertices[1]._id,结果相同。
那么,是否可以使用子查询来确定图遍历的起始节点?
【问题讨论】: