Aspnet核心Hotchocolate GrahpQl查询未获取参数

问题描述

嗨,我有以下查询类:

public class haProgrammesQuery
    {
        [UseFiltering]
        public async Task<IQueryable<User>> GetUsers([Service] haProgrammesContext Context) => Context.Users;
        
        
        [UseFiltering]
        [UseFirstOrDefault]
        public async Task<IQueryable<User>> GetUserById([Service] haProgrammesContext Context,string Id) { 
        return Context.Users.Where(u => u.UserId.ToString() == Id);
        } 
    }

使用查询可以在操场上正常工作

query {
users{
    userId
    name
  }
}

但查询

query{
 userById(id:"fd8b8670-60cf-451a-8fea-0fc0c69cde3a")
  {
    name
  }
}

调用UserById方法(使用断点检查),但是string Id参数为null,因此返回操场时响应为null。

我还使用了基本的echo方法来返回字符串参数,但是它也收到了空参数,并且还与async Task<IQueryable<User>>一起使用(因为这个版本是,是的,我知道它没有使用awaiting)还有只是标准IQueryable<User>就是为了确定那里是否有东西-我错在哪里?!

解决方法

Hotchocolate(或沿途的某种形式的中间件)解释参数名称,并在将其放入架构时包含一个小写的第一个字母

因此

        [UseFiltering]
        [UseFirstOrDefault]
        public async Task<IQueryable<User>> GetUserById([Service] haProgrammesContext Context,string Id) { 
        return Context.Users.Where(u => u.UserId.ToString() == Id);
        } 

需要成为

        [UseFirstOrDefault]
        public async Task<IQueryable<User>> GetUserById([Service] haProgrammesContext Context,string id) { 
        return Context.Users.Where(u => u.UserId.ToString() == id);
        } 

使其运行(在ID上小写i)

因此... MyCamelCaseArgumentName必须是myCamelCaseArgumentName等...

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...