Я имею ввиду как он в бэк попадает

По приведённому условию язык приходит только в теле авторизованного PATCH /user. После валидации контроллер сохраняет data.language в поле пользователя MongoDB.

Короткий ответ

Что ответить на собеседовании

По приведённому условию язык приходит только в теле авторизованного PATCH /user. После валидации контроллер сохраняет data.language в поле пользователя MongoDB.

Подробный разбор

Ответ с пояснениями

Условие

Я имею ввиду как он в бэк попадает

Клиент → PATCH /user + Authorization: Bearer body: { "language": "en" | "ru" | "es" }

UserController.update

validateUpdate → user.language = data.language

MongoDB: поле language у пользователя

Больше ниоткуда:

  • при create / login язык не пишется;
  • геолокация / IP / Accept-Language бэкенд не смотрит;
  • сам бэкенд значение не угадывает.

Пока клиент не сделал этот PATCH после получения JWT — в БД языка нет.

Ответ

По приведённому условию язык приходит только в теле авторизованного PATCH /user. После валидации контроллер сохраняет data.language в поле пользователя MongoDB.

Клиент получает JWT, затем отправляет выбранный язык вместе с Authorization: Bearer. Бэкенд принимает только допустимые значения en, ru или es и обновляет пользователя, определённого по токену.

Регистрация и вход здесь язык не устанавливают, а IP и Accept-Language не используются. Поэтому отсутствие PATCH означает отсутствие сохранённого значения. Если нужен fallback, его следует явно определить как отдельное правило, а не считать, что сервер уже угадывает язык.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее