【发布时间】:2020-09-15 03:52:50
【问题描述】:
我正在使用 apollo、graphql、react、mongo 并尝试使用名称和电子邮件在客户端创建一个新用户并将其发布在主页上,但是当我点击提交按钮时出现此错误 - 变量所需类型“ID!”的“$charactersID”未提供。,位置:[object Object],路径:未定义。我尝试为 charactersID 设置一个变量,但不确定我是否正确
import React, {Component} from 'react'
import {Add_User} from '../gql/mutations'
import {Mutation} from 'react-apollo'
class Signup extends Component{
render(){
let name, email;
return(
<Mutation mutation={Add_User} onCompleted={() => this.props.history.push('/')}>
{(addUser, {loading, error}) => (
<div>
Create new user
<form onSubmit= {e=>{e.preventDefault();
addUser({variables: {name: name.value, email: email.value }})
name.value = ""
email.value = ""
}}>
<input type="text" name="name" ref={node => { name = node}} placeholder
="NAME"/>
<input type="text" name="email" ref={node => { email = node}} placeholder
="EMAIL"/>
<input type="submit" value="Submit" />
</form>
{loading && <p>Loading...</p>}
{error && <p>Error : Please try again </p>}
</div>
)}
</Mutation>
)
}
}
export default Signup;
突变
import gql from 'graphql-tag'
export const Add_User = gql`
mutation addUser($name: String!, $email: String, $description: String, $totalwins: Int,
$charactersID: ID!){
addUser(name: $name, email: $email, description: $description, totalwins: $totalwins,
charactersID: $charactersID){
_id
email
name
description
totalwins
charactersID{
name
wins
losses
percentage
image
}
}
}
`
【问题讨论】:
-
可能您不需要
charactersID来创建用户对象 - 您可以使用单独的突变分配/添加/更改嵌套/相关数据
标签: reactjs mongodb graphql apollo react-apollo