我有一个具有这种结构的文档
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参数起作用,当然,使用更多的逻辑,其他过滤器也应如此。但是我不知道是否正确的方法,因为我要添加一个没有关系的关系://那么有什么更好的(正确的)方法呢?