可以使用graphql compose在文档字段上添加参数吗?

时间:2019-12-06 14:33:50

标签: node.js graphql graphql-compose

我有一个具有这种结构的文档

fieldA: String
fieldB: [Array of fieldC]

现在,假设我要执行这样的查询

query{
   documents {
      fieldA
      fieldB(someProperty: someValue, limit: 2) {
             fieldCProperty
         }
     }
}

因此仅获取fieldB数组的子集,最终通过某些属性对其进行过滤。

我尝试过

DocumentSchema.extendField("fieldB", {
  type: [FieldCSchema],
  args: {
    limit: {
      type: "Int",
      defaultValue: 2
    },
    skip: "Int"
  }
});

它已成功将这些args添加到该字段中,但是在启动查询时会忽略它们:/那么是否可以将此类过滤器添加到document字段中?

编辑: 我已经通过这样做解决了这个问题。我没有在该字段上添加关系,而是调用了extendField,该关系指向我在其中应用字段参数的解析器。像这样

DocumentSchema.addRelation("fieldB", {
  resolver: fieldCResolver
});


const fieldCResolver = schemaComposer.createResolver({
  name: "fieldCResolver ",
  type: [fieldC],
  args: {
    limit: {
      type: "Int",
      defaultValue: 4
    },
    skip: "Int"
  },
  resolve: async ({ source, args, context, info }) => {
    return source.fieldB.slice(args.limit * args.skip, args.limit);
  }
});

通过这种方式,limit和skip参数起作用,当然,使用更多的逻辑,其他过滤器也应如此。但是我不知道是否正确的方法,因为我要添加一个没有关系的关系://那么有什么更好的(正确的)方法呢?

0 个答案:

没有答案