【问题标题】:Hasura Error - GraphQL error: field "user_id" not found in type: 'projects_insert_input'Hasura 错误 - GraphQL 错误:在类型中找不到字段“user_id”:'projects_insert_input'
【发布时间】: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/…

标签: graphql hasura


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2021-09-21
    • 2022-10-04
    • 2020-01-09
    • 2018-01-30
    • 2023-02-11
    • 2019-11-08
    • 2016-11-05
    相关资源
    最近更新 更多