Проектируйте поля по потребностям клиента и явным ограничениям выборки.
Зачем
Зачем это нужно
Измерьте обращения резолверов к базе на списках разного размера.
Проверьте nullability, вложенные права и границы пакетного кэша.
Вопросы
Частые вопросы
Как описать пример схемы и загрузки?
«Учебный ответ содержит 20 товаров, но только трёх разных авторов. Нужны id товара и имя автора. Предложи схему и пакетную загрузку без отдельного SQL на товар». Укажите библиотеку и контекст запроса. Попросите ожидаемый набор ключей загрузки и проверку, что повторяющийся автор не создаёт лишнюю работу, а отсутствие автора соответствует объявленной схеме.
Достаточно ли ограничить глубину запроса?
Нет, неглубокий запрос тоже может запросить много элементов и дорогих полей. Нужны согласованные ограничения размеров списков, сложности и времени работы, зависящие от реализации. Попросите два примера: длинную цепочку вложений и широкую выборку с тысячей объектов. Защита должна оценивать оба случая; одного числа максимальной глубины недостаточно, чтобы предсказать стоимость всех допустимых запросов клиента.
Почему пакетный кэш нельзя делать общим без разбора?
Результат может зависеть от пользователя, арендатора и правил доступа. Глобальное переиспользование по одному id рискует вернуть чужие данные или устаревшее значение. Попросите явно описать время жизни загрузчика и состав ключа. В учебной проверке два пользователя запрашивают один объект с разными разрешениями: ответы должны следовать их правам, даже если запросы выполняются рядом во времени.
Как проверить корректность резолверов?
Проверьте обычный ответ, отсутствующий объект, запрет вложенного поля и ошибку зависимости. Сверьте поведение null с договорённым контрактом, затем измерьте число SQL-запросов при росте списка. Чат не исполняет вашу схему, а библиотеки GraphQL имеют разные интерфейсы. Передайте версии и фактический ответ сервера, если предложенный код не соответствует ожидаемому поведению на стенде.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.