如何定义 NOT is sanity.io 结构生成器?

How to define NOT is sanity.io structure builder?

我正在尝试过滤所有没有类别(引用数组)的产品,但找不到如何操作。

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 不工作。 我将不胜感激。

使用 Vision 找到答案(非常好用的工具)

https://www.sanity.io/docs/the-vision-plugin

 .filter('_type == $type && !defined(categories)')
 .params({ type: 'product' })

正如您自己发现的那样,您可以使用 defined 函数来检查是否设置了某些内容(或未通过使用 NOT 运算符 ! 进行设置)。您可以在此处找到有关 defined 函数的一些文档:

也想引用文档中的内容:

You'll never see a null value on a document stored in Sanity. If you update a value to null, that key will disappear. Thus, the is null constraint you may know from SQL does not bear any meaning here. A value is either defined or !defined.

从“查询的工作原理”页面:

Filtering by the presence of a field, e.g. *[defined(status)] which only match document that have the status property set to any value.