【发布时间】:2020-06-26 14:25:11
【问题描述】:
我正在尝试添加一个新项目,并将一个已连接用户分配给一个项目,但我继续收到错误“GraphQL 错误:字段“user_id”在类型中找不到:“projects_insert_input””
每个项目都必须有一个 user_id 列(我可以在 hasura 上的 graphiql 编辑器中添加项目,但不能在我的客户端上)
变异
const ADD_PROJECT = gql`
mutation ($project: String!, $isPublic: Boolean!, $user: String!) {
insert_projects(objects:
{
title: $project,
is_public: $isPublic,
user_id: $user
}
) {
affected_rows
returning {
id
title
created_at
is_completed
}
}
}
`;
const ProjectInput = ({ isPublic = false }) => {
let input;
const [projectInput, setProjectInput] = useState('');
const [addProject] = useMutation(ADD_PROJECT);
return (
<form className="formInput">
<input
className="input"
placeholder="What needs to be done?"
value={projectInput}
onChange={e => (setProjectInput(e.target.value))}
ref={n => (input = n)}
/>
<button onClick={(e) => {
e.preventDefault();
addProject({
variables:
{
project: projectInput,
isPublic,
user: "auth0|5e6d66e02ae6a80c8bc42eb4"
// description: projectDescInput
}
});
}}>Click me</button>
<i className="inputMarker fa fa-angle-right" />
</form>
);
};
【问题讨论】:
-
您是否配置了任何权限?通常在 Hasura 控制台中,突变是有效的,因为您可能已经配置了提供完全访问权限的管理员密码。还有阿波罗客户端是如何配置的?传递的标头是什么?
-
^与上述类似的问题。此外,在使用复数
insert_projects时,您可能会缺少数组括号 [],例如insert_projects(objects: [{...}]) { ... }。相关文档:hasura.io/docs/1.0/graphql/manual/mutations/…