以前写过一些 graphql 的小练习,只用过 query,这是第一次用 mutation 去尝试更新数据。
我使用的是 gem 'graphql', '~> 1.11.6'
使用 rails g graphql:mutation Add_Person
创建了相关文件,然后去修改 add_person.rb
module Mutations
class AddPerson < BaseMutation
# TODO: define return fields
# field :post, Types::PostType, null: false
field :person, Types::PersonType, null: false
# TODO: define arguments
# argument :name, String, required: true
argument :name, String, required: true
argument :age, Integer, required: true
argument :description, String, required: false
def resolve(name: , age: , description: )
person = Person.create!(name: name, age: age, description: description)
end
# TODO: define resolve method
# def resolve(name:)
# { post: ... }
# end
end
end
遇到的问题是:
输入的参数,只有一个 AddPersonInput 类型的,叫做 input 的参数。我定义的 name、age、description 什么的都没有了。这是怎么个玩儿法?如果生写,就会报错,说是 input 定义了,但是没有填写。
在网上查了一下,没有看到更多的东西了。
另外,我看到网上的一些例子里面定义的 Type,都是继承自 Node,而我是用 rails g graphql:object 做的,所以都是继承自 object。不知道有什么差异。