Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 如何在vue apollo客户端中定义GraphQL输入类型 情况:_Vuejs2_Graphql_Apollo_Apollo Client_Vue Apollo - Fatal编程技术网

Vuejs2 如何在vue apollo客户端中定义GraphQL输入类型 情况:

Vuejs2 如何在vue apollo客户端中定义GraphQL输入类型 情况:,vuejs2,graphql,apollo,apollo-client,vue-apollo,Vuejs2,Graphql,Apollo,Apollo Client,Vue Apollo,我将其用作后端GraphQL服务和前端客户端 在我的Vue组件中,我有一个如下的gql查询:(关系:一首歌有更多的歌曲部分) 现在我想用一个变异来更新给定的歌曲: const updateSong = gql` mutation updateSongMutation ($id:Int!,$name:String,$authors_lyrics:String,$authors_music:String, $song_parts: [SongPart]) { updateSo

我将其用作后端GraphQL服务和前端客户端

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

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

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组件中:

methods: {
            save: function(){
                this.$apollo.mutate({
                    mutation: updateSong,
                    variables: this.songData,
                }).then((result) => {
                    console.log(result);
                }).catch((error) => {
                    console.log(error);
                })
            }
        },
但是,要更新song_parts数组,我需要定义自定义输入类型:

input SongPart{
    id: Int!
    lyrics: String
}
问题 我不知道在哪里定义这个输入类型。当我在Chrome WebTools中使用GraphiQL时,在变异之前定义它是没有问题的。我还找到了一些阿波罗服务器的信息,但我需要它在客户端


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

您的输入类型仍应在服务器的模式中定义。我对laravel不太熟悉,但看看laravel graphql的文档,现在输入的定义就像常规类型一样,您只需将
$inputObject
属性设置为true。参见示例。我可以想象,您会将它们与常规类型一起添加到
config/graphql.php
中的类型中


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

谢谢您的时间!我创建了新类型的SongPartInput,其中$inputObject设置为true。我没有注意到这个变量。
input SongPart{
    id: Int!
    lyrics: String
}