我正在尝试使用GraphQl为两个字段设置联合类型,这些字段可以包含String或Number。并且我设置了一个名为“ FloorType”的联合类型,其中包含以下内容:
union FloorType = IntBox | StringBox
在这里定义了IntBox和Stringbox这两种类型:
type IntBox {
value: Int
}
type StringBox {
stringName: String
}
我已经设置了解析器方法:
const resolvers: IResolvers = {
IntBox: {
__isTypeOf(obj: number, context: any, info: any) {
console.log('returned obj', obj);
return obj;
},
},
FloorType: {
__resolveType(obj: any, context: any, info: any) {
if (typeof obj === 'string') {
return 'StringBox';
}
if (typeof obj === 'number') {
console.log('number', obj);
return 'IntBox';
}
},
},
};
但是,无论我尝试了什么,查询要么返回“ null”,要么抛出一个错误。 在这种情况下,它会检查该字段是否为数字并在控制台日志中显示该数字,但在编写查询时它不会在操场上显示。
我已经设置了resolver方法。但是看来它还没有工作。
apart.resolver.ts
const resolvers: IResolvers = {
IntBox: {
__isTypeOf(obj: number, context: any, info: any) {
console.log('returned obj', obj);
return obj;
},
},
FloorType: {
__resolveType(obj: any, context: any, info: any) {
if (typeof obj === 'string') {
return 'StringBox';
}
if (typeof obj === 'number') {
console.log('number', obj);
return 'IntBox';
}
},
},
};
在GraphQl游乐场中使用以下参数进行查询:
aparts(page:1, newest: false) {
name
price
currency
squares
floor {
... on IntBox {
value
}
}
created
link
_id
}
}
向我返回以下内容:
"floor": {
"value": null
},
我希望floor的输出例如是: 地板{ “值”:5 }
谢谢!