GraphQL анализ затрат на массив - PullRequest
0 голосов
/ 16 марта 2019

Мне немного трудно понять graphql-cost-analysis . Вот мое определение GraphQL

  type Query {
    product(id: ID!): Product
  }

  type Product  {
    id: ID!
    title: String
    price: String
    getRelatedProducts(limit: Int = 2): [Product]
  }

getRelatedProducts - тяжелая операция, поэтому я хочу добавить к ней больше затрат. Итак, вот что я попробовал.

type Product @cost(complexity: 1)
{
  id: ID!
  title: String
  price: String
  getRelatedProducts(limit: Int = 2): [Product]
    @cost(complexity: 50)
}

Но когда я попытался сделать запрос вот так

{
  product(id: "2223") {
    id, title, price,
    getRelatedProducts {
      id, price
      getRelatedProducts {
        id, price
      }
    }
  }
}
// Calculated Cost: 101

Я думал, что стоимость будет 151:

  • Получить стоимость товара 1
  • Тогда использовать getRelatedProducts стоит 50
  • Так как getRelatedProducts возвращает 2 продукта, то мы снова используем getRelatedProducts из этих двух, это должно стоить 50 x 2.
  • Всего 1 + 50 + 50 x 2 = 151

Я пытался использовать multipliers, но я тоже не хочу

  getRelatedProducts(limit: Int = 2): [Product]
    @cost(complexity: 50, multipliers: ["limit"])

Но getRelatedProduct - это дорогостоящая операция, но ограничение количества возвращаемых предметов не является дорогой операцией. Если я использую, как это. Расчетная стоимость будет 301.

Может быть, я что-то упустил. Нужны некоторые указатели.

...