簡體   English   中英

構建突變 Graphql 查詢

[英]Building Mutation Graphql Query

我對 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, } } );

當我將它發射到服務器時,我收到以下反饋:

position 中使用的類型為“TerminalInput”的變量“$terminalId”期望類型為“String.”。

所以我改成這樣:

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

並得到了錯誤

變量“$terminalId”從未在“addTerminalMutation”操作中使用。

如果我改為

mutation addTerminalMutation($terminalId: String!) {

它說沒有提供TerminalId,但是如果我記錄它,就可以看到

在此處輸入圖像描述

那么,寫這個的正確方法是什么?

謝謝。

您需要將addTerminalMutation($terminalId: TerminalInput)更改為addTerminalMutation($terminalId: String!)以指示正確的類型。

首先,

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

是由在行中傳遞變量引起的

mutation addTerminalMutation($terminalId: TerminalInput)

以后再也不引用它。

第二部分的問題似乎是terminalId參數沒有被分解。 行中的參數

addTerminal(terminal: { terminalId: $terminalId })

預計是一個字符串..

你可以這樣做:

addTerminal(input: $terminalId)

傳遞整個終端 ID object。

有關更多信息,請參見: https://blog.apollographql.com/designing-graphql-mutations-e09de826ed97

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM