Это не то, в чем особенно хорош GraphQL.Безусловно, проще всего будет извлечь отдельные поля и затем выполнить вычисления на клиенте, что-то вроде
data.item.forEach((i) => { i.total_price = i.units * i.price_per_unit });
В частности, нет никакого способа запустить какой-либо «подзапрос» в GraphQL,Учитывая функцию «умножения», как вы показали, нет синтаксиса GraphQL, который позволил бы вам «вызывать» ее с любыми конкретными входами.
Если вы считаете, что определенные вычисленные значения достаточно распространены, вы также можете добавить ихв схему GraphQL и вычисляет их на стороне сервера, если требуется, с помощью пользовательской функции распознавания.
type Item {
units: Int!
pricePerUnit: CurrencyValue!
# computed, always units * pricePerUnit
marketPrice: CurrencyValue!
}
type CurrencyValue {
amount: Float!
currency: Currency!
# computed, always amount * currency { usd }
usd: Float!
}
type Currency {
code: String!
"1 currency = this many US$"
usd: Float!
}
, разрешающей запросы типа
{
item {
marketPrice { usd }
}
}