Анонимная функция на посещении? - PullRequest
0 голосов
/ 22 апреля 2020

Прямо сейчас, когда пользователь 'visitFieldDefinition's', я немного вычисляю в функции field.resolve. Есть ли способ сделать это на уровне посещения?

например, я обновляю значение времени в моей базе данных каждый раз, когда пользователь посещает поле. Один запрос на уровне объекта может запустить эту обработку несколько сотен раз, что является полностью избыточным. Есть ли аналогичная функция field.resolve на уровне посещения?

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете иметь директиву схемы с OBJECT в качестве цели, которая перебирает поля этого объекта и изменяет преобразователь каждого поля. Однако logi c решателя всегда находится на уровне поля, поскольку разрешаются только поля. Если логика c, которую вы повторяете, не зависит от аргументов, переданных распознавателю, то он может находиться внутри visitObject, в противном случае он должен находиться внутри самой функции распознавателя.

Если работа то, что вы делаете внутри преобразователя, является избыточным, тогда вы, вероятно, можете кэшировать любое значение, которое вы многократно вычисляете. Кеш может быть переменной внутри вашего класса директив (в этом случае он будет очищен только при перезапуске процесса) или может быть вставлен в контекст (в этом случае он будет задан по запросу c и уничтожен после Ваш запрос завершен).

...