变量不能是非输入类型 - GraphQL .Net约定

问题描述 投票:2回答:1

我有使用conventions的graphql.net实现

我的模型定义如下。

public partial class Project
    {
        public Project()
        {
            ProjectGroup = new HashSet<ProjectGroup>();
            ProjectUser = new HashSet<ProjectUser>();
            Datasource = new HashSet<Datasource>();
        }

        public int Id { get; set; }
        public string Name { get; set; }

        public virtual ICollection<ProjectGroup> ProjectGroup { get; set; }
        public virtual ICollection<ProjectUser> ProjectUser { get; set; }
        public virtual ICollection<Datasource> Datasource { get; set; }
    }

我正在尝试仅更新上述类的名称。使用上面的类(这基本上是一种实体框架类,但这与这个问题无关)

所以我定义了如下变异。

public sealed class Mutation
    {
        public async Task<Project> SaveProject([Inject] IProjectRepository projectRepository, projectModels.Master.Project project)
        {
            return Mapper.Map<Project>(await projectRepository.SaveProject(project));
        }
    }

我将这种变异称为如下。

axios
                .post('https://localhost:44375/api/Graph', {
                    query: `mutation ($project: Project) {   
                                    saveProject(project: $project) {
                                    name
                                  }
                                }`,
                    variables: {
                        'project': { 'name' : data.label },
                    },
                })

作为回应我得到低于错误。

{"errors":[{"message":"Variable \"project\" cannot be non-input type \"Project\".","locations":[{"line":1,"column":11}],"extensions":{"code":"VALIDATION_ERROR"}}]}

我究竟做错了什么?

c# ajax graphql
1个回答
0
投票

从graphql.net约定的官方repo,我找到了一个例子,有一个属性用于输入类型。使用它之后就可以了。

https://github.com/graphql-dotnet/conventions/blob/master/samples/DataLoaderWithEFCore/DataLoaderWithEFCore/GraphApi/Schema/InputTypes/UpdateMovieTitleParams.cs

所以它需要以下列方式的属性。

[InputType]
    public class UpdateMovieTitleParams
    {
        public Guid Id { get; set; }

        public string NewTitle { get; set; }
    }
© www.soinside.com 2019 - 2024. All rights reserved.