扩展GraphQL过滤器定义

时间:2019-11-06 21:22:13

标签: javascript node.js graphql graphql-js postgraphile

我已经扩展了我的graphql模式,以添加总计解析器,但是我似乎无法扩展过滤器以对该字段进行过滤。由于看起来很简单,我无法弄清楚什么是错的,所以也许它不被支持?我正在使用带有makeExtendSchemaPlugin的Postgraphile,但我相信问题是基本的graphql语法。

return {
  typeDefs: gql`
    extend type Note {
      lines: Int
    }
    extend type NoteFilter {
      lines: IntFilter
    }
  `,
  resolvers: {
    Note: {
      resolve: async(parent, args, ctx, info) => {
        // logic here
        return parent['@lines'].data.length;
      }
    }
  }
}

这似乎很简单。计数解析器可以工作,并且可以为我提供注释中有多少行,但我无法对其进行过滤。我不想将过滤器逻辑放在lines属性本身中。如果我定义一个新查询并给它一个NoteFilter,则该过滤器存在,但不包括扩展属性(行)。有人知道我在做什么错吗?这是我要查询的最终目标:

gql`
  {
    allNotes(filter: {
      lines: {
        greaterThan: 10
      }
    }) {
      id
      lines
      line {
        content   
      }
    }
  }
`

1 个答案:

答案 0 :(得分:0)

如果要扩展输入对象类型,则正确的语法为:

extend input NoteFilter {
  lines: IntFilter
}

在SDL中,输入对象类型表示为input,而不是type