首页 > 解决方案 > 使用 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}) {
  }
}

标签: c#graphqlhotchocolate

解决方案


推荐阅读