首页 > 解决方案 > Hasura 错误 - GraphQL 错误:在类型中找不到字段“user_id”:'projects_insert_input'

问题描述

我正在尝试添加一个新项目,并将已连接用户分配给项目,但我继续收到错误“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>
    );
};

标签: graphqlhasura

解决方案


它看起来像一个权限错误。在名为Data的部分中,选择相应的表(在您的情况下为项目?)并打开权限选项卡。在那里,您应该为相应的角色设置插入权限。如果您不使用自定义角色,则必须将权限修改为公共角色。

这里的关键是控制台使用管理员角色,所以你可以在那里做任何事情。

请小心,因为修改公共角色权限可能会有风险。

Hasura 权限部分


推荐阅读