我有突变 -
`export const setTimeLineOnUser = gql
mutation ($tID: ID!, $uID: ID! ){
setTimeLineOnUser(userTimeLineId: $tID, timeLineUserId: $uID){
userTimeLine {
id
updatedAt
posts{
id
postType
updatedAt
}
}
timeLineUser {
id
name
email
}
}
};`
和一个看起来像这样的函数 -
`this.props.createTimeLine().then((response) => {
console.log(response.data.createTimeLine.id);
this.addTimeLineToUser(response.data.createTimeLine.id, this.props.userQuery.user.id);
});`
用户有这样的一对一关系 -
`setTimeLineOnUser(userTimeLineId: ID!, timeLineUserId: ID!): SetTimeLineOnUserPayload`
现在正在运行我收到此错误 -
错误:GraphQL错误:类型为“ID!”的变量'$ tID'预期值但价值未定义。原因:预期的非空值,找到null。 (第1行,第11栏): 变异($ tID:ID!,$ uID:ID!){ ^ GraphQL错误:'ID'类型的变量'$ uID'预期值但价值未定义。原因:预期的非空值,找到null。 (第1行,第22栏): 变异($ tID:ID!,$ uID:ID!){ ^ 在新的ApolloError(apollo.umd.js:1959) 在apollo.umd.js:2670 在tryCallOne(core.js:37) 在core.js:123 在JSTimers.js:117 at Object.callTimer(JSTimersExecution.js:95) at Object.callImmediatesPass(JSTimersExecution.js:199) at Object.callImmediates(JSTimersExecution.js:214) 在MessageQueue.js:228 在MessageQueue .__ guard(MessageQueue.js:218)
虽然console.log(this.props.userQuery.user.id);
正在返回有效ID!
我甚至尝试将变量分配给状态,以便它们可能不会为空但仍然没用!我做错了什么?
如果你想看到这些文件 - Gist
答案 0 :(得分:0)
问题在于,当您调用addTimelineToUser
给出一个对象但需要两个参数时。
componentDidMount(){
this.props.createTimeLine().then((response) => {
// this.addTimeLineToUser({ tID: response.data.createTimeLine.id, uID: this.props.userQuery.user.id }) wrong
this.addTimeLineToUser(response.data.createTimeLine.id, this.props.userQuery.user.id)
});
}
addTimeLineToUser = (tId, uId) => {
this.props.setTimeLineOnUser({variables: {tId, uId}})
.then((response) => {
console.log(response);
}).catch((err) => {
console.log(err);
});
};
可能这不起作用,因为我不确定查询是否在组件内部加载了mount函数。