【发布时间】:2020-07-24 20:23:07
【问题描述】:
我正在使用 Apollo Graphql 来获取不同模型或类型的列表。我尝试使用 inhirit,但我没有得到它。我试图使用整个对象,但我想省略不需要的字段。
我使用可为空字段创建架构类型,因为并非所有对象都具有所有字段。
我会用下一个例子更好地解释:
这是一个简单的示例类(OBJECT)设计:
car {
name: String
wheelNumber: Integer
}
trunk extends car {
cargoSize: Integer
}
所以我用这种方式创建了我的 Graphql Schema:
input vehicleInput {
name: String,
wheelNumber: Integer,
cargoSize: Integer
}
type vehicle {
name: String,
wheelNumber: Integer,
cargoSize: Integer
}
type Query {
vehicles: [vehicle]
}
type Mutation {
addVehicle(input: vehicleInput ): vehicle!
}
解析器示例:
import { vehicle } from "./model";
export const resolvers = {
Query: {
vehicles : () => {
return vehicle.find({});
},
},
Mutation: {
addVehicle: (_, { input }) => {
const inputResponse = vehicle.create(input);
return inputResponse;
},
}
};
当我执行车辆查询时,如果对象没有 cargoSize 字段,它也会返回所有字段,它会返回 cargoSize: null。
query {
vehicles {
name
wheelNumber
cargoSize
}
}
我想在 cargoSize 字段为空时省略它。像这样:
{
vehicles: [
{
name: "car 1",
wheelNumber: 4
},
{
name: "car 2",
wheelNumber: 4
},
{
name: "truck 1",
wheelNumber: 8,
cargoSize: 65
},
{
name: "car 3",
wheelNumber: 4
},
]
}
而不是这个:
{
vehicles: [
{
name: "car 1",
wheelNumber: 4,
cargoSize: null
},
{
name: "car 2",
wheelNumber: 4,
cargoSize: null
},
{
name: "truck 1",
wheelNumber: 8,
cargoSize: 65
},
{
name: "car 3",
wheelNumber: 4,
cargoSize: null
},
]
}
有什么办法吗?我一直在研究,但我没有找到任何关于它的信息。
【问题讨论】:
标签: javascript node.js api nosql graphql