我正在尝试用 PHP 学习 ArangoDB。我目前设置了以下图表:
用户 -> 用户电子邮件 -> 电子邮件
'User' 和 'Email' 是顶点集合,而 'userEmail' 是边集合。
我正在使用此模型进行用户身份验证,根据请求,代码会将给定的电子邮件与数据库进行匹配,获取该节点并返回传入的“userEmail”边缘和“用户”节点,但前提是属性“主”设置为'userEmail' 边缘中的'TRUE'。
当前解决方案
我正在使用以下作为当前解决方案,但我认为这不是实现我想要的最佳方式。它也没有给我一种方法来检测“userEmail”边缘的“主要”字段
FOR e IN email
FILTER e.address == @email
RETURN {
'email': e,
'user': NEIGHBORS(email, userEmail, e, 'inbound', [], {includeData:true})
}
其他解决方案
我也使用了这个解决方案,结果相同
FOR e IN email
FILTER e.address == @email
LET u = (NEIGHBORS(email, userEmail, e, 'inbound', [], {includeData:true}))
RETURN u
另一种解决方案
我想出的另一个解决方案是
FOR e in email
FILTER e.address == @email
FOR p IN TRAVERSAL(user, userEmail, e._id, "inbound", {paths: true})
RETURN p
这将返回顶点和边,但仅在第二组结果中正确。我可以硬编码以使用第二组返回值,但我认为这不是最好的方法。
当前的解决方案是最好的还是有更好的方法来做我想做的事?