【发布时间】:2019-11-15 10:50:10
【问题描述】:
我今天在生产中使用了以下 graphql 架构定义:
type BasketPrice {
amount: Int!
currency: String!
}
type BasketItem {
id: ID!
price: BasketPrice!
}
type Basket {
id: ID!
items: [BasketItem!]!
total: BasketPrice!
}
type Query {
basket(id: String!): Basket!
}
我想将 BasketPrice 重命名为 Price,但是这样做会对架构进行重大更改,因为客户端可能会在片段中引用它,例如
fragment Price on BasketPrice {
amount
currency
}
query Basket {
basket(id: "123") {
items {
price {
...Price
}
}
total {
...Price
}
}
}
我曾希望可以为它起别名以实现向后兼容性,例如
type Price {
amount: Int!
currency: String!
}
# Remove after next release.
type alias BasketPrice = Price;
type BasketPrice {
amount: Int!
currency: String!
}
type BasketItem {
id: ID!
price: BasketPrice!
}
type Basket {
id: ID!
items: [BasketItem!]!
total: BasketPrice!
}
type Query {
basket(id: String!): Basket!
}
但这似乎不是一个功能。有没有推荐的方法来安全地重命名 graphql 中的类型而不会导致重大更改?
【问题讨论】:
标签: graphql graphql-js apollo-server