首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vue-apollo客户端中定义GraphQL输入类型

如何在vue-apollo客户端中定义GraphQL输入类型
EN

Stack Overflow用户
提问于 2017-07-27 00:12:02
回答 1查看 1.2K关注 0票数 3

情况:

我使用laravel-graphql作为后端GraphQL服务,使用vue-apollo作为前端客户端。

在我的Vue组件中,我有一个gql查询,如下所示:(关系:一首歌有更多的SongParts)

代码语言:javascript
复制
const getSong = gql`
    query FetchSong ($id:Int!){
        song(id: $id) {
            id,
            name,
            authors_lyrics,
            authors_music
            song_parts{
                type
                lyrics
            }
        }
    }`;

现在有一个变异,我想用来更新给定的歌曲:

代码语言:javascript
复制
const updateSong = gql`
    mutation updateSongMutation ($id:Int!,$name:String,$authors_lyrics:String,$authors_music:String, $song_parts: [SongPart]) {
        updateSongMutation(id: $id, name: $name, authors_lyrics: $authors_lyrics, authors_music: $authors_music, song_parts: $song_parts) {
            id
        }
    }`;

。。在这样使用的Vue组件中:

代码语言:javascript
复制
methods: {
            save: function(){
                this.$apollo.mutate({
                    mutation: updateSong,
                    variables: this.songData,
                }).then((result) => {
                    console.log(result);
                }).catch((error) => {
                    console.log(error);
                })
            }
        },

但是,要更新song_parts数组,我需要定义一个自定义输入类型:

代码语言:javascript
复制
input SongPart{
    id: Int!
    lyrics: String
}

问题

我不知道在哪里定义这个输入类型。当我在Chrome WebTools中使用GraphiQL时,在变化之前定义它是没有问题的。我也找到了一些关于apollo服务器的信息,但我需要在客户端找到它。

因此,基本上问题是关于改变数据列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-27 04:21:37

您的输入类型仍然应该在服务器上的架构中定义。我对laravel不是很熟悉,但是看一下laravel-graphql的文档,现在看起来输入的定义就像常规类型一样,您只需将$inputObject属性设置为true即可。请参阅示例here。我想您会将它们与常规类型一起添加到config/graphql.php中的类型中。

我还建议将输入重命名为类似于SongPartInput的名称,这样如果您也有一个SongPart类型,您就不会感到困惑。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45332321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档