Graphql - 根据出版年份分组剧集

Posted

技术标签:

【中文标题】Graphql - 根据出版年份分组剧集【英文标题】:Graphql - Group episodes based on the year published 【发布时间】:2021-11-24 04:53:43 【问题描述】:

我有一个 json 文件,其中包含一组剧集,每个剧集都有一个键 publishedAt,格式为 YYYY-MM-DD。我需要根据出版年份对剧集进行分组。我该如何为此编写查询?我有这个,但是这个分组是根据完整的发布日期而不是年份来分组的。


  allEpisodesJson 
    group(field: publishedAt) 
      fieldValue
      totalCount
    
  

【问题讨论】:

在您的(许多)其他问题中提供反馈,而不是每天创建一个新问题... 【参考方案1】:

你不能直接这样做,因为你的publishedAt 包含完整的日期,所以你需要通过创建一个新节点来格式化它(你不能同时分组和格式化,因为该字段带有错误的格式):

exports.onCreateNode = ( node, actions ) => 
  const  createNodeField  = actions

  if (node.internal.type === "Json" && node.publishedAt) 
    const date = new Date(node.publishedAt)

    const year = date.getFullYear()

    createNodeField( node, name: "year", value: year )
  

注意:检查您的节点内部类型。我假设是Json,但请检查它以确保条件正在被验证。

上面的 sn-p 位于您的 gatsby-node.js 中,基本上,您正在根据来自 publishedAt 字段的值生成一个新字段 (year)。

然后,在您的group 中,您将能够:


  allEpisodesJson 
    group(field: year) 
      fieldValue
      totalCount
    
  

注意 2:检查 GraphiQL 操场 (localhost:8000/___graphql) 中的查询以确保该字段存在同名

【讨论】:

以上是关于Graphql - 根据出版年份分组剧集的主要内容,如果未能解决你的问题,请参考以下文章

PAT甲级1022 Digital Library

下载的 PDF 文献应该如何命名?

[PAT] A1022 Digital Library

如何更新 graphql 端点(不使用 Graph.cool)

GraphQL/Graph.cool 查询过滤嵌套关系

GraphQL 浅谈,从理解 Graph 开始