#serialization #graphql #nestjs
#сериализация #graphql #nestjs
Вопрос:
Я провел некоторое исследование на тему сериализации ответов для NestJS / GraphQL. Здесь можно найти некоторую полезную информацию, но документация, похоже, полностью сосредоточена на подходе code first. Мой проект использует подход, основанный на схеме, и, судя по тому, что я прочитал в нескольких источниках, вариантом, доступным для проекта, основанного на схеме, было бы реализовать перехватчики для распознавателей и выполнить сериализацию там.
Прежде чем я закончу и начну писать эти перехватчики, мой вопрос заключается в следующем; есть ли какие-либо лучшие варианты, предоставляемые nestjs для реализации сериализации для подхода schema first?
Комментарии:
1. Какую сериализацию вы пытаетесь здесь выполнить? Ваш ответ должен соответствовать ответу, созданному схемой, и в большинстве случаев сервер apollo под капотом позаботится об этом за вас, если вы возвращаете данные правильной формы
2. Это справедливое замечание, моя схема должна соответствовать ответу. С учетом сказанного, я на самом деле не пытаюсь исключить или выставить какие-либо поля, больше для очистки значений в ответе, округления чисел или удаления нулей, например. Я понимаю, что это можно было бы сделать в другом месте до ответа, но я считаю, что сериализация — это хорошее место для решения этих проблем с отображением данных.
Ответ №1:
Если это просто преобразование значений, то перехватчик — отличный инструмент для этого. Все, что показано для «сначала кода», должно работать для «сначала схемы» с точки зрения высокоуровневых идей фреймворка (перехватчики, каналы, фильтры и т. Д.). Фактически, после запуска сервера не должно быть заметной разницы между двумя подходами и тем, как они работают. Большая вещь, о которой вам нужно беспокоиться, заключается в том, что вы не сможете легко воспользоваться преимуществами class-transformer
и class-validator
потому, что исходные определения классов создаются с помощью gql-codegen
, но вы все равно можете расширить эти типы и добавить необходимые декораторы, если захотите.