Схема NestJS первая сериализация GraphQL

#serialization #graphql #nestjs

#сериализация #graphql #nestjs

Вопрос:

Я провел некоторое исследование на тему сериализации ответов для NestJS / GraphQL. Здесь можно найти некоторую полезную информацию, но документация, похоже, полностью сосредоточена на подходе code first. Мой проект использует подход, основанный на схеме, и, судя по тому, что я прочитал в нескольких источниках, вариантом, доступным для проекта, основанного на схеме, было бы реализовать перехватчики для распознавателей и выполнить сериализацию там.

Прежде чем я закончу и начну писать эти перехватчики, мой вопрос заключается в следующем; есть ли какие-либо лучшие варианты, предоставляемые nestjs для реализации сериализации для подхода schema first?

Комментарии:

1. Какую сериализацию вы пытаетесь здесь выполнить? Ваш ответ должен соответствовать ответу, созданному схемой, и в большинстве случаев сервер apollo под капотом позаботится об этом за вас, если вы возвращаете данные правильной формы

2. Это справедливое замечание, моя схема должна соответствовать ответу. С учетом сказанного, я на самом деле не пытаюсь исключить или выставить какие-либо поля, больше для очистки значений в ответе, округления чисел или удаления нулей, например. Я понимаю, что это можно было бы сделать в другом месте до ответа, но я считаю, что сериализация — это хорошее место для решения этих проблем с отображением данных.

Ответ №1:

Если это просто преобразование значений, то перехватчик — отличный инструмент для этого. Все, что показано для «сначала кода», должно работать для «сначала схемы» с точки зрения высокоуровневых идей фреймворка (перехватчики, каналы, фильтры и т. Д.). Фактически, после запуска сервера не должно быть заметной разницы между двумя подходами и тем, как они работают. Большая вещь, о которой вам нужно беспокоиться, заключается в том, что вы не сможете легко воспользоваться преимуществами class-transformer и class-validator потому, что исходные определения классов создаются с помощью gql-codegen , но вы все равно можете расширить эти типы и добавить необходимые декораторы, если захотите.