如何解决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等...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。