graphql - 如何在 gatsby graphql 中查询日期范围?

标签 graphql gatsby

所以我在graphql中有这个查询。但是大于(gt) 和小于(lt) 不是定义的字段。

query Test {
  allStrapiEvent(filter:{date:{gt:"02/13/2019"}}){
    edges{
      node{
        name
        date(formatString:"MM/DD/YYYY")
      }
    }
  } 
}

最佳答案

它看起来像 dateString类型,因此不会得到比较运算符(gt、lt、gte、lte);这是一种耻辱,因为这真的很有用。

我认为作为一种解决方法,您可以添加一个附加字段,例如 timestamp并以数字形式存储日期(如果您的 CMS 尚未提供)。然后您可以对它们使用比较运算符。

// moment.js comes with gatsby
const moment = require('moment');

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

  // I'm guessing your type is StrapiEvent, but it could be st else
  if (node.internal.type === `StrapiEvent`) {
    const date = node.date;

    createNodeField({
      name: 'timestamp',
      node,
      // convert date to unix timestamp & convert to number
      value: +moment(date).format('X'),
    })
  }
}

然后说你想要从昨天开始的事件。您可以获得像 moment().subtract(1, 'day').format('X') 这样的 unix 时间戳。//1549044285
query Test {
  allStrapiEvent(filter: {
    fields: {
      timestamp: {
        gt: 1549044285
      }
    }
  }) {
    edges{
      node{
        name
        date(formatString:"MM/DD/YYYY")
      }
    }
  } 
}

不理想,但会起作用。

关于graphql - 如何在 gatsby graphql 中查询日期范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54473828/

相关文章:

github - Gatsby 在 Netlify 上部署失败,字段 'browser' 不包含有效的别名配置

graphql - 使用 psql 连接到在 Digital Ocean Droplet 中创建的 Hasura 上的 postgres 实例

javascript - 找不到 schema.graphql 文件( Node graphql-yoga)

javascript - 在 GraphQL 查询模板中使用 React Prop (字符串)

gatsby - 使用 gatsby 和 netlify 在构建时获取后在客户端上保留 api 数据

Graphql 查询在控制台中记录一个数字

postgresql - 使用分页时如何提高嵌套 graphql 连接的性能

typescript - 如何缩小由 graphQL codegen 自动生成的 Typescript 类型?

ruby-on-rails - graphql-ruby,日期或日期时间类型

javascript - gatsbyjs 的发布策略是什么