首页 > 解决方案 > GraphQL 按数据过滤

问题描述

我有以下查询:

query MyQuery($today: Date) {
        allMovies(
            filter: {
              info: { endDate: { gte: $today }, startDate: { lte: $today } }
            }
          ) {
        edges {
          node {
            info {
             startDate
             endDate
            }
          }
        }
}

我正在将 ReactJS 与 GatsbyJS 一起使用,谁能解释我如何将变量插入到 graphql 中?我真的不明白如何传递和创建 $today 这个查询。或者也许有可能以正确的格式插入今天的日期。

所有日期均为 YYYY-MM-DD

在 mysql 我可以直接插入变量/有一个函数 CURDATE() :(

标签: reactjsgraphqlgatsby

解决方案


您必须在调用 API 时将变量作为单独的对象传递。来自graphql.org的示例:

var dice = 3;
var sides = 6;
var query = `
    query RollDice($dice: Int!, $sides: Int) {
       rollDice(numDice: $dice, numSides: $sides)
}`;

fetch('/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
  },
  body: JSON.stringify({
    query,
    variables: { dice, sides },
  })
}).then(r => r.json())
  .then(data => console.log('data returned:', data));

推荐阅读