如何定义 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
函数的一些文档:
- https://www.sanity.io/docs/how-queries-work#more-ways-to-filter-99fd60e475f2
- https://www.sanity.io/docs/query-cheat-sheet#functions-a1da4a3b2adc
也想引用文档中的内容:
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.
我正在尝试过滤所有没有类别(引用数组)的产品,但找不到如何操作。
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
函数的一些文档:
- https://www.sanity.io/docs/how-queries-work#more-ways-to-filter-99fd60e475f2
- https://www.sanity.io/docs/query-cheat-sheet#functions-a1da4a3b2adc
也想引用文档中的内容:
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.