Тут вообще всё интереснее. Ты думаешь, что работаешь с данными, с полями. А на самом деле никаких полей нет, это абстракция, за каждым полем с определенным именем стоит функция-резолвер.
In fact, this is exactly how GraphQL works. Each field on each type is backed by a function called the resolver which is provided by the GraphQL server developer. When a field is executed, the corresponding resolver is called to produce the next value.