Как определить, НЕ является построителем структуры sanity.io?
Я пытаюсь отфильтровать все продукты без категорий (это массив ссылок) и не могу найти, как это сделать.
S.listItem()
.title('Without category')
.id('productsWithoutCategories')
.child(
S.documentList()
.title('Without categories')
.menuItems(S.documentTypeList('product').getMenuItems())
.filter('_type == $type && !category')
.params({ type: 'product' })
)
!category
не работает. Буду признателен за помощь.
2 ответа
Полученный ответ с помощью Vision (действительно приятный инструмент)
https://www.sanity.io/docs/the-vision-plugin
.filter('_type == $type && !defined(categories)')
.params({ type: 'product' })
Как вы уже выяснили, вы можете использовать defined
функция, чтобы проверить, установлено ли что-то (или не установлено с помощью оператора NOT !
). Вы можете найти документацию поdefined
функция здесь:
Хочу также процитировать документацию:
Вы никогда не увидите нулевое значение в документе, хранящемся в Sanity. Если вы обновите значение до нуля, этот ключ исчезнет. Таким образом, ограничение is null, которое вы можете узнать из SQL, здесь не имеет никакого значения. Значение либо
defined
или!defined
.
И со страницы Как работают запросы:
Фильтрация по наличию поля, например
*[defined(status)]
которые соответствуют только документам, для которых свойство status установлено на любое значение.