#typescript #rest #nestjs #crud
Вопрос:
Если у вас есть следующий маршрут, который должен возвращать имя пользователя и город пользователя.
Контроллер:
@HttpCode(200)
@Get(':userId')
async getUserUnauthenticated(@Param("userId") userId: string): Promise<GetUserDto> {
return this.usersService.getUsers(userId, false)
}
Обслуживание:
async getUsers(userId: string, authenticated: boolean): Promise<GetUserDto> {
const user = await this.fusionAuthService.searchUserById(userId);
const impacter = await this.impactersService.retrieveImpacterFromDatabaseById(userId)
if (authenticated) {
return {
username: user.username,
city: impacter.address.city,
image: user.imageUrl
}
} else {
return {
username: user.username,
city: impacter.address.city
}
}
}
DTO:
export class GetUserDto {
username: string;
city: string;
image?: string;
}
Но вместо того, чтобы
{
"username": "ExampleName",
"city": "ExampleTown"
}
он возвращается
{
"data": {
"username": "ExampleName",
"city": "ExampleTown"
}
}
Что я делаю не так?
Ответ №1:
Похоже, у вас есть какой-то перехватчик, который преобразует ваши выходные данные, посмотрите здесь, как это работает, https://docs.nestjs.com/interceptors может быть, вы сможете разобраться в своем проекте, как это происходит.
С уважением.
Комментарии:
1. спасибо тебе! в main.ts был установлен глобальный перехватчик. app.useGlobalInterceptors(новый ResponseDataFormatterInterceptor()); Этот перехватчик добавил оболочку данных {}.
2. Круто, я рад, что смог тебе помочь!