如何处理graphQL突变中的并集或接口?

时间:2019-07-09 14:26:08

标签: graphql

我有以下模式:

type Vehicle {
  id: ID!
  name: String!
  color: String!
}

input AddVehicle {
  name: String!
  color: String!
}

input UpdateVehicle {
  id: ID!
  name: String!
}

现在,我想根据车辆型号(例如

)向车辆添加一些属性。
type CarProperties {
  wheelSize: Int!
  doors: Int!
}

type BoatProperties {
  length: Int!
}

union VehicleProperties = CarProperties | BoatProperties

type Vehicle {
  [ ... ]
  properties: vehicleProperties!
}

因此,编写查询非常简单,但是要进行突变时,我却很挣扎...

AFAIK graphQL输入未实现并集或接口(https://github.com/graphql/graphql-spec/issues/488中有相关的线程)

所以我在这里看到的解决方法是复制我的输入,例如:

input addBoatVehicle {
  name: String!
  color: String!
  properties: BoatProperties!
}

,依次类推updateBoatVehicleaddCarVehicleupdateCarVehicle。 但是,如果我有很多车型,或者可能是第三个或第四个突变,恐怕很快就会变得麻烦。

有没有建议的方法来处理这种情况?

1 个答案:

答案 0 :(得分:0)

创建单独的突变是正确的解决方案。您可以通过使突变轻巧到令人难以置信的程度来减轻某些痛苦,并将这些项目的处理重构为一个单独的功能。

select * from table
where thedatecolumn >= DATEADD(DAY, -21, CAST(GETDATE() AS DATE))
    and DATEPART(WEEKDAY, thedatecolumn) = DATEPART(WEEKDAY, GETDATE())