gpt4 book ai didi

graphql - 过滤strapi中嵌套组件的字段值

转载 作者:行者123 更新时间:2023-12-05 07:15:56 30 4
gpt4 key购买 nike

我正在尝试以某种方式过滤在组件(以前称为组)中设置的字段值。我假设我的对象结构非常简单,但无法让它工作。

这是我从生成的 graphql 模式中提取的(简化的)结构:

type Product {
name: String!
description: String
systemtype: Systemtype
applicationAreas: [ComponentContentApplicationArea]
id: ID!
created_at: DateTime!
updated_at: DateTime!
}

type ComponentContentApplicationArea {
rating: Int!
statement: String!
applicationareaname: Applicationareaname
id: ID!
}

type Applicationareaname {
name: String!
description: String!
id: ID!
created_at: DateTime!
updated_at: DateTime!
}

没有任何过滤器的我的 GraphQL 基本查询:

query {
products {
applicationAreas {
rating
applicationareaname{
name
}
}
}
}

结果:

{
"data": {
"products": [
{
"applicationAreas": [
{
"rating": 5,
"applicationareaname": {
"name": "Area A"
}
},
{
"rating": 7,
"applicationareaname": {
"name": "Area B"
}
},
{
"rating": 7,
"applicationareaname": {
"name": "Area C"
}
}
]
}
]
}
}

我的理解是我可以通过这种方式过滤评​​级字段值 - 但显然我错了:

query {
products (where: {applicationAreas: {rating: 5}}) {
applicationAreas {
rating
applicationareaname{
name
}
}
}
}

执行上述查询时出现此错误:

{
"errors": [
{
"message": "Your filters contain a field 'applicationAreas.rating' that doesn't appear on your model definition nor it's relations",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"products"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"status": 400,
"stacktrace": [...]
}
}
}
],
"data": {
"products": null
}
}

非常感谢任何帮助,因为我完全坚持这一点。

非常感谢!

最佳答案

为了过滤组件中的数据,您可以使用 advance population feature of the Entity Service API ,就像这个例子:

strapi.entityService('api::Product.Product').findMany({
populate: {
ComponentContentApplicationArea: true,
repeatableComponent: {
filters: {
rating: 5
},
populate: true,
},
},
});

关于graphql - 过滤strapi中嵌套组件的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412560/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com