如何定义 NOT 是 sanity.io 结构构建器?
Posted
技术标签:
【中文标题】如何定义 NOT 是 sanity.io 结构构建器?【英文标题】:How to define NOT is sanity.io structure builder? 【发布时间】:2020-06-02 01:43:31 【问题描述】:我正在尝试过滤所有没有类别的产品(这是引用数组),但找不到方法。
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
不工作。
我将不胜感激。
【问题讨论】:
【参考方案1】:使用 Vision 找到答案(非常令人愉快的工具)
https://www.sanity.io/docs/the-vision-plugin
.filter('_type == $type && !defined(categories)')
.params( type: 'product' )
【讨论】:
【参考方案2】:正如您已经发现的那样,您可以使用defined
函数来检查是否设置了某些内容(或者使用NOT 运算符!
未设置)。您可以在此处找到有关 defined
函数的一些文档:
也想引用文档:
您永远不会在 Sanity 中存储的文档上看到空值。如果将值更新为 null,则该键将消失。因此,您可能从 SQL 中知道的 is null 约束在这里没有任何意义。值为
defined
或!defined
。
从查询工作方式页面:
根据字段的存在进行过滤,例如
*[defined(status)]
仅匹配状态属性设置为任意值的文档。
【讨论】:
以上是关于如何定义 NOT 是 sanity.io 结构构建器?的主要内容,如果未能解决你的问题,请参考以下文章