Queries traverse references. Consider this query:
{
posts: { pid1: {
title: true,
author: { name: true }
} }
}
The first result of this query may be:
{
posts: { pid1: {
title: 'Hello, world',
author: { $ref: 'users.uid1' }
} }
}
The { name: true }
part of the query (which gets the author’s name) is still unfulfilled.
Graffy will then construct a follow-up query to fulfill that, by combining the unfulfilled sub-query with reference path 'users.uid1'
.
{
users: { uid1: { name: true } }
}
If the path has a trailing range key and the root of the sub-query has a range key, the two range keys are merged when constructing this follow-up query. Here's an example:
{
users: { uid1: {
name: true,
posts: [{
$key: { first: 10 },
title: true
}]
} }
}
Graffy combines the reference
['posts', { authorId: 'uid1', all: true }]
with the unfulfilled sub-query
[{ $key: { first: 10 }, title: true }]
to constructs the follow-up query.
{
users: { uid1: {
name: 'Alice',
posts: { $ref: [
'posts',
{ authorId: 'uid1', all: true }
] }
} }
}
{
posts: [{
$ref: {
authorId: 'uid1',
first: 10
},
title: true
}]
}