如何将变异中的 GraphQLEnumType 作为字符串值传递
How to pass GraphQLEnumType in mutation as a string value
我有以下 GraphQLEnumType
const PackagingUnitType = new GraphQLEnumType({
name: 'PackagingUnit',
description: '',
values: {
Carton: { value: 'Carton' },
Stack: { value: 'Stack' },
},
});
在突变查询中,如果我将 PackagingUnit 值作为 Carton(不带引号)传递,它会起作用。但是如果我作为字符串 'Carton' 传递,它会抛出以下错误
In field "packagingUnit": Expected type "PackagingUnit", found "Carton"
有没有办法从客户端将枚举作为字符串传递?
编辑:
我的前端有一个表单,我从用户那里收集 PackagingUnit 类型以及其他字段。 PackagingUnit 类型在前端表示为字符串(不是 graphQL 枚举类型),因为我没有使用 Apollo Client 或 Relay,所以我必须自己构造 graphQL 查询字符串。
现在我将表单数据收集为 JSON 然后执行 JSON.stringify() 然后删除属性上的双引号以获得最终的 graphQL 兼容查询。
例如。我的表单有两个字段 packagingUnitType (An GraphQLEnumType) 和 noOfUnits (An GraphQLFloat)
我的 json 结构是
{
packagingUnitType: "Carton",
noOfUnits: 10
}
使用 JSON.stringify()
将其转换为字符串
'{"packagingUnitType":"Carton","noOfUnits":10}'
然后删除属性上的双引号
{packagingUnitType:"Carton",noOfUnits:10}
现在可以像
一样将其传递给 graphQL 服务器
newStackMutation(input: {packagingUnitType:"Carton", noOfUnits:10}) {
...
}
这仅在枚举值没有任何引号时有效。如下图
newStackMutation(input: {packagingUnitType:Carton, noOfUnits:10}) {
...
}
谢谢
GraphQL 查询可以接受变量。这对您来说会更容易,因为您不必进行一些棘手的字符串连接。
我想您使用的是 GraphQLHttp - 或类似工具。要在查询中发送变量,请发送一个带有 query
键和 variables
键的 JSON 正文:
// JSON body
{
"query": "query MyQuery { ... }",
"variables": {
"variable1": ...,
}
}
查询语法为:
query MyMutation($input: NewStackMutationInput) {
newStackMutation(input: $input) {
...
}
}
然后,您可以将变量传递为:
{
"input": {
"packagingUnitType": "Carton",
"noOfUnits": 10
}
}
GraphQL 会理解 packagingUnitType
是一个枚举类型,并且会为您进行转换。
我有以下 GraphQLEnumType
const PackagingUnitType = new GraphQLEnumType({
name: 'PackagingUnit',
description: '',
values: {
Carton: { value: 'Carton' },
Stack: { value: 'Stack' },
},
});
在突变查询中,如果我将 PackagingUnit 值作为 Carton(不带引号)传递,它会起作用。但是如果我作为字符串 'Carton' 传递,它会抛出以下错误
In field "packagingUnit": Expected type "PackagingUnit", found "Carton"
有没有办法从客户端将枚举作为字符串传递?
编辑: 我的前端有一个表单,我从用户那里收集 PackagingUnit 类型以及其他字段。 PackagingUnit 类型在前端表示为字符串(不是 graphQL 枚举类型),因为我没有使用 Apollo Client 或 Relay,所以我必须自己构造 graphQL 查询字符串。 现在我将表单数据收集为 JSON 然后执行 JSON.stringify() 然后删除属性上的双引号以获得最终的 graphQL 兼容查询。
例如。我的表单有两个字段 packagingUnitType (An GraphQLEnumType) 和 noOfUnits (An GraphQLFloat) 我的 json 结构是
{
packagingUnitType: "Carton",
noOfUnits: 10
}
使用 JSON.stringify()
将其转换为字符串'{"packagingUnitType":"Carton","noOfUnits":10}'
然后删除属性上的双引号
{packagingUnitType:"Carton",noOfUnits:10}
现在可以像
一样将其传递给 graphQL 服务器newStackMutation(input: {packagingUnitType:"Carton", noOfUnits:10}) {
...
}
这仅在枚举值没有任何引号时有效。如下图
newStackMutation(input: {packagingUnitType:Carton, noOfUnits:10}) {
...
}
谢谢
GraphQL 查询可以接受变量。这对您来说会更容易,因为您不必进行一些棘手的字符串连接。
我想您使用的是 GraphQLHttp - 或类似工具。要在查询中发送变量,请发送一个带有 query
键和 variables
键的 JSON 正文:
// JSON body
{
"query": "query MyQuery { ... }",
"variables": {
"variable1": ...,
}
}
查询语法为:
query MyMutation($input: NewStackMutationInput) {
newStackMutation(input: $input) {
...
}
}
然后,您可以将变量传递为:
{
"input": {
"packagingUnitType": "Carton",
"noOfUnits": 10
}
}
GraphQL 会理解 packagingUnitType
是一个枚举类型,并且会为您进行转换。