建立变异图查询

时间:2019-09-20 05:39:38

标签: graphql

我对GraphQL还是很陌生,所以我有点努力地了解如何在前端编写适当的查询。

所以,这是我在服务器端进行的更改

type Mutation {
    addTerminal(terminal: TerminalInput): Terminal
    // other stuff not related
}
type Terminal {
    terminalId: String!
    merchantId: String
    terminalDesignator: String
}

input TerminalInput {
    terminalId: String!
    merchantId: String
    terminalDesignator: String
}

我相信它使用的是正确的结构,但是当我尝试与客户端连接时,我有点困惑。

这是我在前端进行的查询。

export const ADD_TERMINAL_MUTATION = () => (

mutation addTerminalMutation($terminalId: TerminalInput) { addTerminal(terminal: { terminalId: $terminalId }) { terminalId, merchantId, terminalDesignator, } } );

当我将其发射到服务器时,会收到以下反馈:

  

在期望类型为“ String!”的位置中使用的类型为“ TerminalInput”的变量“ $ terminalId”。

所以我改为:

addTerminal(terminal: { terminalId: "123" }) {

出现错误

  

变量“ $ terminalId”从未在操作“ addTerminalMutation”中使用。

如果我更改为

mutation addTerminalMutation($terminalId: String!) {

它说没有提供TerminalId,但是如果我将其登录,则可以看到

enter image description here

那么,写这个的正确方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将addTerminalMutation($terminalId: TerminalInput)更改为addTerminalMutation($terminalId: String!),以指示正确的类型。

答案 1 :(得分:0)

首先,

Variable "$terminalId" is never used in operation "addTerminalMutation".

是因为在行中传递了变量

mutation addTerminalMutation($terminalId: TerminalInput)

,以后再也不会引用它。

第二部分中的问题似乎是terminalId参数未分解。 该行中的参数

addTerminal(terminal: { terminalId: $terminalId })

应该是字符串!。

您可以执行以下操作:

addTerminal(input: $terminalId)

传递整个终端ID对象。

请参阅此以获取更多信息: https://blog.apollographql.com/designing-graphql-mutations-e09de826ed97