提问者:小点点

Laravel Lighthouse GraphQL在没有“输入”的情况下创建突变:


我正在寻找Laravel灯塔的留档,我看到了两种类型的突变。

  • 包含字符串input的突变:(在此处找到)
mutation {
  createPost(input: { # <-- the "input:" I'm talking about
    title: "My new Post"
    author: {
      connect: 123
    }
  }){
    id
    author {
      name
    }
  }
}

另一个没有输入的突变:(在这里找到)

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:时,graph ql-playground抱怨:“CreateTaskInput类型的Field createTask参数输入是必需的,但未提供”

现在我尝试将模式更改为:

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

但是然后服务器给出了一个ParseException

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


共2个答案

匿名用户

如果您想在没有输入的情况下编写突变,也可以省略@传播指令。所以:

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

但我认为在输入中包含它是一种“最佳实践”。当然,您可以做任何您想做的事情。

匿名用户

试试这个

type Mutation {
    createTask: Task! @create
}

https://newbedev.com/index.php/graphql-mutations-without-arguments