c# - 使用 GraphQL/HotChocolate (C#) 传递、计算输入和过滤结果的最佳实践?
问题描述
我们目前正在进行一个研究项目,我们决定在后端使用 HotChocolate 作为 GraphQL-Server。其中一个想法是在前端已知的给定点周围的特定区域内找到一些东西。经过几次试验,我们最终在数据对象上创建了一个方法并返回结果,但我们无法弄清楚如何过滤结果。
有没有人建议如何过滤结果,或者是否有另一种/更好的方法来实现目标?我们当前的实现看起来像这样([UsePaging]
,[UseFiltering]
并[UseSorting]
在查询中设置):
后端的数据类型(摘录)
pulbic class Product
{
public int ProductId { get; set; }
public decimal price { get; set;]
// ... More propteries
public double Distance(double lon, double lat)
{
// ...
}
}
前端的 GraphQL 查询
query {
products (where: {price: {lte: 40}},
order: {price:DESC}) {
totalCount
nodes {
productId
price
distance(lat:9, lon:47)
}
}
}
前端的 GraphQL 查询结果(如预期)
{
"data": {
"productList": {
"totalCount": 40,
"nodes": [
{
"productId": 40,
"price": 40,
"distance": 82.79875282093245
},
...
]
}
}
}
前端的 GraphQL 查询(不工作:告诉“字段距离不是由类型“产品”定义的)
query {
products (where: {price: {lte: 40}, distance: {lte:50}},
order: {price:DESC}) {
}
}
解决方案
推荐阅读
- php - 在 php 中分别拆分 URL 和返回组件
- python - Python:从嵌套循环中打印数字序列
- javascript - 对于此默认设置,如何开始使用 express 和 nuxt/viue
- android - 为什么我们在 MVP 中定义视图和演示者的范围
- powershell - 在模块“Az.Compute”中找到“Get-azVM”命令,但无法加载该模块
- clojure - 如何查看 lein 任务的执行时间
- ios - 如何让颤振运行在带有 iPhone 的 OSX 上可靠地工作?
- c - 在 STM32H7 上接收 IrDA 消息
- python-3.x - 如果有像“pic.twitter.com”这样的网址,如何删除推文中的网址
- javascript - 如何用茉莉花单元测试情节点击事件