Groq: присоединиться к полю документа
У меня есть схема, которая читает что-то вроде этого: страница (документ) имеет массив Items (объект); у каждой позиции может быть пост (документ); у каждой публикации есть несколько тегов (документа).
У меня есть большая часть работы по детализации, но по какой-то причине я не могу полностью выполнить соединение по тегам. Вот сокращенный взгляд на мою схему:
{ name: 'page',
type: 'document',
fields: [
{ name: 'title', type: 'string' },
{ name: 'slug', type: 'slug' },
{ name: 'items', type: 'array',
of: [
{ type: 'itemImage' }, /* and a couple others */
],
},
],
},
{ name: 'itemImage',
type: 'object',
fields: [
{ name: 'image',
title: 'Image',
type: 'image',
validation: Rule => Rule.required(),
},
{ name: 'post',
type: 'reference',
to: [
{ type: 'post' },
],
},
]
},
{ name: 'post',
type: 'document',
title: 'Post',
fields: [
{ name: 'title',
type: 'string',
},
{ name: 'tags',
type: 'array',
of: [
{ type: 'reference', to: [{type: 'tag'}] },
]
},
],
},
{ name: 'tag',
type: 'document',
fields: [
{ name: 'tag', type: 'string' },
],
},
и вот мой рабочий запрос...
*[_type == "page" && slug.current == "home"] {
'slug': slug.current,
title,
'gridItems': items[] {
'src': image.asset->url,
'title': post->title,
'postLink': post->slug.current,
}
}[0]
… Итак, я понял, как запрашивать массив объектов и как запрашивать ссылочный документ, но, похоже, я не могу перейти к запросу массива ссылочных документов. Какие-нибудь подсказки?
1 ответ
Понял
*[_type == "page" && slug.current == "home"] {
'slug': slug.current,
title,
'gridItems': items[] {
'src': image.asset->url,
'title': post->title,
'postLink': post->slug.current,
'tags': post->tags[]->{tag}
}
}[0]