1

您好我有以下查询类:

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参数为空,因此返回操场的响应为空。

我还玩过一个基本的 echo 方法来返回字符串参数,但它也收到了一个 null 参数并且也玩过async Task<IQueryable<User>>(因为这个版本是,是的,我知道它没有使用等待),也只是IQueryable<User>标准如果那里有什么-我错了什么?!

4

1 回答 1

2

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 等......

于 2020-09-21T15:55:52.103 回答