【问题标题】:Laravel Lighthouse GraphQL create mutation without "input:"Laravel Lighthouse GraphQL 在没有“输入:”的情况下创建突变
【发布时间】:2020-05-11 12:11:44
【问题描述】:

我正在寻找 Laravel Lighthouse 的文档,我看到了两种类型的突变。

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

还有一个没有input:(found here)的突变

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: 时,graphql-playground 抱怨:“CreateTaskInput 类型的字段 createTask 参数 input 是必需的,但不是提供”

现在我尝试将架构更改为:

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

但随后服务器给出了ParseException

我确实更喜欢没有input: 的语法,因为它的重复性要少得多。 有人可以帮忙吗?

【问题讨论】:

    标签: laravel graphql laravel-lighthouse


    【解决方案1】:

    如果你想编写一个没有input 的突变,也可以省略@spread 指令。所以:

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

    但我认为将其包含在 input 中是一种“最佳实践”。当然你可以做任何你想做的事。

    【讨论】:

    • 谢谢。我不确定什么是最佳做法。这是否意味着没有input的示例文档不正确?
    • 对不起,没有input的例子在哪里?我没看出有什么不对...
    • 我可能在这里遗漏了一些东西,但是如果我转到lighthouse-php.com/4.8/concepts/arg-resolvers.html 并查看第二段代码(mutation CreateTaskWithNotes),那么在我看来这是一个没有@987654329 的突变@.
    • 不,这是一个客户端请求的示例(你将在 Apollo 中编写的内容)
    猜你喜欢
    • 2020-05-01
    • 2020-04-25
    • 2020-08-23
    • 2019-09-28
    • 2020-12-15
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多