Javascript 扩展GraphQL过滤器定义

Javascript 扩展GraphQL过滤器定义,javascript,node.js,graphql,graphql-js,postgraphile,Javascript,Node.js,Graphql,Graphql Js,Postgraphile,我已经扩展了graphql模式以添加一个totals解析器,但是我似乎无法扩展过滤器来过滤这个字段。我不知道什么是错误的,因为它看起来很简单,所以可能不支持它?我正在使用makeExtendSchemaPlugin的Postgraphile,但我相信问题在于基本的graphql语法 return { typeDefs: gql` extend type Note { lines: Int } extend type NoteFilter { l

我已经扩展了graphql模式以添加一个totals解析器,但是我似乎无法扩展过滤器来过滤这个字段。我不知道什么是错误的,因为它看起来很简单,所以可能不支持它?我正在使用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   
      }
    }
  }
`

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

extend input NoteFilter {
  lines: IntFilter
}

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

,谢谢这是我问题的答案。如果其他人找到了它,值得注意的是,虽然这会将字段放入筛选器中,但实际使用字段上的筛选器运行查询时会返回“无法解析筛选器字段”错误。这是有意义的,因为字段是在我的resolve方法中计算的,不能用作限制实际执行的查询结果的查询参数