Я использую go на стороне сервера с graphql, а angular6 с apollo на стороне клиента.
Я пытаюсь отправить следующий объект в мутации:
{
"deliveryId": 1,
"products": [{
"id": 3,
"quantity": 1
}],
"payment": {
"name": "kfir ozer",
"number": "4580 0307 6696 9445",
"expiry": "02 / 122",
"cvc": "332"
}
}
Я вставляю этот объект в следующую функцию, чтобы отправить его на сервер:
addOrderInfo(order) {
return this.apollo.mutate({
mutation: gql `
mutation AddOrderInfo($order: Order!) {
addOrderInfo(order: $order) {
id
}
}
`,
variables: {
order
}
});
}
и теперь на стороне сервера ..
вот как я настраиваю соответствующие типы:
cartProduct: = graphql.NewInputObject(
graphql.InputObjectConfig {
Name: "CartProduct",
Fields: graphql.InputObjectConfigFieldMap {
"id": & graphql.InputObjectFieldConfig {
Type: graphql.Int,
},
"quantity": & graphql.InputObjectFieldConfig {
Type: graphql.Int,
},
},
},
)
payment: = graphql.NewInputObject(
graphql.InputObjectConfig {
Name: "CreditCardPayment",
Fields: graphql.InputObjectConfigFieldMap {
"name": & graphql.InputObjectFieldConfig {
Type: graphql.String,
},
"number": & graphql.InputObjectFieldConfig {
Type: graphql.String,
},
"expiry": & graphql.InputObjectFieldConfig {
Type: graphql.String,
},
"cvc": & graphql.InputObjectFieldConfig {
Type: graphql.String,
},
},
},
)
order: = graphql.NewInputObject(
graphql.InputObjectConfig {
Name: "Order",
Fields: graphql.InputObjectConfigFieldMap {
"deliveryId": & graphql.InputObjectFieldConfig {
Type: graphql.Int,
},
"payment": & graphql.InputObjectFieldConfig {
Type: payment,
},
"products": & graphql.InputObjectFieldConfig {
Type: graphql.NewList(cartProduct),
},
},
},
)
и вот как я установил мутацию:
RootMutation: = graphql.NewObject(graphql.ObjectConfig {
Name: "Mutation",
Fields: graphql.Fields {
"addOrderInfo": & graphql.Field {
Type: ContactUsType,
Args: graphql.FieldConfigArgument {
"order": & graphql.ArgumentConfig {
Type: order,
},
},
Resolve: func(params graphql.ResolveParams)(interface {}, error) {
### here I created a breakpoint with intellij
### and noticed that the payment related values
### are empty strings
},
},
}
...
}
}
и на стороне сервера ... параметры возвращают правильные данные, но payment property
содержит expiry
, cvc
, name
и number
свойства, но они представляют собой пустую строку вместо фактических значений.
что мне не хватает?
спасибо