मैं Laravel Lighthouse के लिए एक दस्तावेज़ देख रहा हूँ और मैं दो प्रकार के उत्परिवर्तन देख रहा हूँ।

mutation {
  createPost(input: { # <-- the "input:" I'm talking about
    title: "My new Post"
    author: {
      connect: 123
    }
  }){
    id
    author {
      name
    }
  }
}

और input: (यहां पाया गया)

mutation CreateTaskWithNotes {
  createTask( # <-- no "input:" here
    id: 45
    name: "Do something"
    notes: [
      {
        content: "Foo bar",
        link: "http://foo.bar"
      },
      {
        content: "Awesome note"
      }
    ]
  ) {
    id
  }
}

मेरा प्रश्न है: मैं input: के बिना काम करने के लिए उत्परिवर्तन कैसे प्राप्त करूं?

मैं दस्तावेज़ीकरण से उदाहरणों को कॉपी (एक संशोधित) करने का प्रयास करता हूं। लेकिन अगर मैं इस तरह एक उत्परिवर्तन लिखता हूं:

type Mutation {
    createTask(input: CreateTaskInput! @spread): Task! @create
}

जब मैं input: को छोड़ने का प्रयास करता हूं, तो ग्राफ़िकल-प्लेग्राउंड शिकायत करता है: "फ़ील्ड createTask तर्क इनपुट प्रकार का CreateTaskInput आवश्यक है लेकिन प्रदान नहीं किया गया है "

अब मैं स्कीमा को इसमें बदलने की कोशिश करता हूं:

type Mutation {
    createTask(CreateTaskInput! @spread): Task! @create
}

लेकिन फिर सर्वर एक ParseException देता है।

मैं input: के बिना सिंटैक्स पसंद करता हूं क्योंकि यह बहुत कम दोहराव वाला है। क्या कोई मदद कर सकता है?

0
Hendrik Jan 25 जिंदा 2020, 14:26

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप input के बिना एक उत्परिवर्तन लिखना चाहते हैं, तो @spread निर्देश को भी छोड़ दें। इसलिए:

type Mutation {
    createTask(
        id: ID
        name: String
    ): Task! @create
}

लेकिन मुझे लगता है कि इसे input के अंदर रखना एक "सर्वोत्तम अभ्यास" है। निःसंदेह आप जो भी करना चाहें गीला कर सकते हैं।

1
Enzo Notario 25 जिंदा 2020, 12:46