graphql变异中无法识别的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了graphql变异中无法识别的参数相关的知识,希望对你有一定的参考价值。

我当前正在关注Meteor / Apollo / GraphQL上的this tutorial,并且在使用参数/变量进行变异时遇到了巨大的麻烦。这是我的代码和底部的一些注释!

代码

Schema

type Resolution {
    _id: String!
    name: String!
}

type Mutation {
    createResolution(name: String!): Resolution
}

Resolver

import Resolutions from './resolutions'

export default {
    Query: {
        resolutions() {
            return Resolutions.find({}).fetch()
        }
    },
    Mutation: {
        createResolution(obj, args, context) {
            console.log('hey i get here')
        }
    }
}

The component using the mutation

import React, { Component } from 'react'
import gql from 'graphql-tag'
import { graphql } from 'react-apollo'

const createResolutionQuery = gql`
    mutation createResolution($name: String!) {
        createResolution(name: $name) {
            _id
        }
    }
`

class ResolutionForm extends Component {
    submitForm = () => {
        this.props
            .createResolution({
                variables: {
                    name: this.name.value
                }
            })
            .then(d => console.log('data received'))
            .catch(e => console.log(e))
    }

    render() {
        return (
            <div>
                <input type="text" ref={input => (this.name = input)} />
                <button onClick={this.submitForm}>Submit</button>
            </div>
        )
    }
}

export default graphql(createResolutionQuery, {
    name: 'createResolution'
})(ResolutionForm)

我知道的

  • 当我尝试将我的查询发送到服务器时,我得到一个http 400错误,我得到以下graphql错误:“未知参数”名称“在字段”createResolution“类型”突变“。”
  • createResolution在我的graphiQL中可用,但在doc中没有显示任何参数。
  • 在教程中规定,更改.graphql模式不会触发流星服务器重新加载,要应用更改,我必须修改我的“register-api”文件,该文件负责制作可执行模式并使用它创建apollo服务器。我做了一些虚假的改变以触发它,但它没有改变任何东西。
  • 我在删除浏览器的缓存后尝试重新启动服务器而没有结果。

所以我认为我的问题在于变异论证(我知道的精彩演绎),但我无法弄清楚拼写错误在哪里或者我遗漏了什么。欢迎来自新鲜面孔的人的帮助,谢谢:)

Edit

重新安装npm包解决了这个问题。

答案

一切看起来都很好我做了一个小改动,并将它作为拉动请求添加到你的github回购。

createResolution(obj, {name}, context) {
        console.log('hey i get here')
        const id = Resolutions.insert({
            name,
        })
        return Resolutions.findOne(id)
    }

在我的机器上运行我没有错误。

以上是关于graphql变异中无法识别的参数的主要内容,如果未能解决你的问题,请参考以下文章

graphQL 变异参数中的通用对象

Python argparse 忽略无法识别的参数

装饰器参数中无法识别的类

如何在同一个 python 脚本中使用 sys 和 argparse 而不会出现无法识别的参数错误?

使用带有两个参数的 UIButton addTarget 时无法识别的选择器

Sangria-graphql:将 derivedInputObjectType 作为变异参数传入时出错