如何定义 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 函数的一些文档:

https://www.sanity.io/docs/how-queries-work#more-ways-to-filter-99fd60e475f2 https://www.sanity.io/docs/query-cheat-sheet#functions-a1da4a3b2adc

也想引用文档:

您永远不会在 Sanity 中存储的文档上看到空值。如果将值更新为 null,则该键将消失。因此,您可能从 SQL 中知道的 is null 约束在这里没有任何意义。值为defined!defined

从查询工作方式页面:

根据字段的存在进行过滤,例如*[defined(status)] 仅匹配状态属性设置为任意值的文档。

【讨论】:

以上是关于如何定义 NOT 是 sanity.io 结构构建器?的主要内容,如果未能解决你的问题,请参考以下文章

js中如何定义 常量?

thinkPHP 如何在类中定义常量

如何自定义自己的IP地址

如何获取自定义 Oracle 函数参数定义

如何在 Android 中定义自定义(复合)布局?

如何在 Rails 中定义自定义配置变量