枚举列上的GraphQL筛选器

枚举列上的GraphQL筛选器,graphql,strapi,Graphql,Strapi,下面是我从Strapi后端获取帖子的GraphQL查询 请注意,我正在我的Nuxt应用程序上运行此功能 现在我只想带那些有post\u status=“Publish” post_status是一个枚举字段,有两个选项作为草稿和发布 query GetPosts{ posts { id post_title post_excerpt post_featured_image{url} post_content post_category{cate

下面是我从Strapi后端获取帖子的GraphQL查询

请注意,我正在我的Nuxt应用程序上运行此功能

现在我只想带那些有
post\u status=“Publish”

post_status
是一个枚举字段,有两个选项作为草稿和发布

query GetPosts{
  posts {
    id
    post_title
    post_excerpt
    post_featured_image{url}
    post_content
    post_category{category_name}
    postingredients{ingredient{ingredient_name}, ingredient_unit}
    updated_at
    post_author{username}
    post_slug    

  }
  }
我不明白我怎么能

  • 如何在我的原始查询中引入
    post\u status
  • 如何过滤
    post\u状态
    ,在那里我只能获得已发布的帖子

    query GetStatusEnum{      
        __type(name: "ENUM_POST_POST_STATUS") {
        name
        enumValues {
          name
        } }          }
    
  • 上述结果:

    {
      "data": {
        "__type": {
          "name": "ENUM_POST_POST_STATUS",
          "enumValues": [
            {
              "name": "Publish"
            },
            {
              "name": "Draft"
            }
          ]
        }
      }
    }
    

    要在原始请求中添加您的
    post_状态
    ,您只需将其添加到要获取的属性列表中即可

    {
      posts {
        id
        post_title
        post_status <- here /!\
      }
    }
    
    您可以在strapi应用程序中使用GraphQL游乐场:


    您将在页面右侧看到一个
    docs
    按钮,该按钮将显示创建GraphQL请求所需的所有信息。

    要在原始请求中添加
    post\u状态,只需将其添加到要获取的属性列表中即可

    {
      posts {
        id
        post_title
        post_status <- here /!\
      }
    }
    
    您可以在strapi应用程序中使用GraphQL游乐场:

    您将在页面右侧看到一个
    docs
    按钮,该按钮将显示创建GraphQL请求所需的所有信息。

    我有一个类似的场景(尽管我也使用Prisma层,请记住),我不确定您是否可以在调用中筛选枚举值,但您可以筛选它返回的内容

    const posts = [the array of all posts]
    
    const isPublished = (post) => {
        if (post.post_status.includes('Publish')) {
            return post;
        }
    }
    
    let publishedPosts = posts.filter(isPublished);
    
    return publishedPosts;
    
    我有一个类似的场景(虽然我也在使用Prisma层,所以请记住),我不确定您是否可以在调用中筛选枚举值,但您可以筛选它返回的值

    const posts = [the array of all posts]
    
    const isPublished = (post) => {
        if (post.post_status.includes('Publish')) {
            return post;
        }
    }
    
    let publishedPosts = posts.filter(isPublished);
    
    return publishedPosts;
    

    不幸的是,这行不通。就连我都在想这会很容易。下面是您得到的错误。“消息”:“预期值类型为\“ENUM\u POST\u POST\u STATUS\”但收到:\“2\”,哼哼奇怪,我创建了一个新的应用程序,它运行良好。但我不确定你要做的是什么。。。你的2。很遗憾,这行不通。就连我都在想这会很容易。下面是您得到的错误。“消息”:“预期值类型为\“ENUM\u POST\u POST\u STATUS\”但收到:\“2\”,哼哼奇怪,我创建了一个新的应用程序,它运行良好。但我不确定你要做的是什么。。。你的2。指向