Laravel Lighthouse GraphQL 创建突变而不 "input:"
Laravel Lighthouse GraphQL create mutation without "input:"
我正在查看 Laravel Lighthouse 的文档,我看到了两种类型的突变。
- 包含字符串
input:
(found here) 的突变
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 抱怨:"Field createTask argument input of type CreateTaskInput is required but not provided"
现在我尝试将架构更改为:
type Mutation {
createTask(CreateTaskInput! @spread): Task! @create
}
但是随后服务器给出了一个ParseException
。
我确实更喜欢没有 input:
的语法,因为这样重复性要低得多。
有人可以帮忙吗?
如果你想在没有 input
的情况下编写一个 mutation,还要省略 @spread
指令。所以:
type Mutation {
createTask(
id: ID
name: String
): Task! @create
}
但我认为将它放在 input
中是 "best practices"。当然你可以做任何你想做的事情。
我正在查看 Laravel Lighthouse 的文档,我看到了两种类型的突变。
- 包含字符串
input:
(found here) 的突变
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 抱怨:"Field createTask argument input of type CreateTaskInput is required but not provided"
现在我尝试将架构更改为:
type Mutation {
createTask(CreateTaskInput! @spread): Task! @create
}
但是随后服务器给出了一个ParseException
。
我确实更喜欢没有 input:
的语法,因为这样重复性要低得多。
有人可以帮忙吗?
如果你想在没有 input
的情况下编写一个 mutation,还要省略 @spread
指令。所以:
type Mutation {
createTask(
id: ID
name: String
): Task! @create
}
但我认为将它放在 input
中是 "best practices"。当然你可以做任何你想做的事情。