There are several ways. Here one I can think of.
If you don’t know the UIDs
{
userA as var(func: eq(name, "UserA"))
userB as var(func: eq(name, "UserB"))
q(func: type(FriendShip)) @filter(uid_in(requestedBy, uid(userA)) AND uid_in(requestedTo, uid(userB))){
requestedBy
requestedTo
since
}
}
If you know the UIDs
{
userA as var(func: uid(0x1))
userB as var(func: uid(0x2))
q(func: uid(0x33)) @filter(uid_in(requestedBy, uid(userA)) AND uid_in(requestedTo, uid(userB))){
requestedBy
requestedTo
since
}
}
From User B using Reverse edge index. Avoiding using such wide query as Type()
{
userA as var(func: eq(name, "UserA"))
userB as var(func: eq(name, "UserB"){
BY as <~requestedBy>
}
q(func: uid(BY)) @filter(uid_in(requestedBy, uid(userA)) AND uid_in(requestedTo, uid(userB))){
requestedBy #This needs a reverse index
requestedTo #This needs a reverse index
since
}
}