问题描述
我对此建模:
type FreightDriver
@model
@key(
name: "byCityByState"
fields: ["state","city"]
queryField: "freightDriversByStateByCity"
) {
id: ID!
name: String!
state: String!
city: String!
trucks: [Truck] @connection(keyName: "byFreightDriver",fields: ["id"])
}
type Truck
@model
@key(name: "byFreightDriver",fields: ["freightDriverId","tons"]) {
id: ID!
freightDriverId: ID!
BoxId: ID!
brand: String!
model: String!
tons: Float!
Box: Box @connection(fields: ["BoxId"])
}
type Box @model {
id: ID!
type: String!
width: Float!
height: Float!
depth: Float!
}
query {
freightDriversByStateByCity(state: "Jalisco",city: { eq: "Guadalajara" }) {
items {
id
name
city
state
trucks(tons: { eq: 12 }) {
items {
brand
model
Box {
type
}
}
}
}
}
}
我得到的回应是:
{
"data": {
"freightDriversByStateByCity": {
"items": [
{
"id": "aebb6696-573d-41ed-894e-22b69264cace","name": "Diey","city": "Guadalajara","state": "Jalisco","trucks": {
"items": [
{
"brand": "chevrolet","model": "12","Box": {
"type": "Refrigerada"
}
}
]
}
},{
"id": "6e8e6772-61e7-47d6-b134-d615a3c65f62","name": "Roberto Mendez","trucks": {
"items": []
}
},{
"id": "d314808c-64e7-421d-b83b-008177ab6b25",{
"id": "19847d0c-185c-48f6-9e5c-435e3907133a","name": "Andrés","model": "1234","Box": {
"type": "Refrigerada"
}
},{
"brand": "chevrolet","Box": {
"type": "Grúa"
}
},{
"id": "2c4c9e3a-bfe5-4d4e-bee7-3eddb1b8ef1b","name": "Roberto Mendez ",{
"id": "cb4eb22c-aa54-416e-aecc-305a18bc9c83","trucks": {
"items": []
}
}
]
}
}
}
如果您检查,有一些与此有关:
"trucks": {
"items": []
}
如何避免它们?我的模型是错误的模型吗?谢谢!
解决方法
您可以使用映射模板修改响应数据,然后将其返回给客户端:
响应映射模板是使用Apache Velocity模板语言(VTL)编写的,并将解析器的结果转换回GraphQL。
在这种情况下,您可以检查trucks.items
是否为空,如果是,则在返回之前将items
中的trucks
数组删除。