Hi @Shreyas Mehta , a reverseDirectRelation directive specifies that a property is another type of connection definition i.e. similar to an edge connection definition. Meaning that it does not point to a property in the corresponding view's container itself. Instead it references a property in another View/Container that is expected to point towards the parent View of the reverseDirectRelation property.
ViewA {
propA: String # maps to ContainerA/propA
propB: ViewB # DirectRelation, maps to ContainerA/propB
propC: [ViewB] # Connection definition for edges, no container property underneath
}
ViewB {
propD: String # maps to ContainerB/propD
propE: [ViewA] @reverseDirectRelation(throughProperty='propB') # Connection definition for a reverse direct relation. Basically defines a way to automatically query ViewA nodes whose 'propB' property point towards ViewB nodes.
}
Since these are not physical properties (on Containers), indexes do not apply here. Instead, to gain performance, indexing should be applied to the property that IS the direct relation itself i.e. propB above.
Hope that clarifies it somewhat.