Вот моя текущая ситуация:
service
предоставляет функцию запроса из базы данных (typeorm).
controller
предоставляет API, и самое важное - это инкапсуляция данных. Я надеюсь, что клиент получит такие данные:
{
code:1456,
data:{
// something real data from database
}
}
Так что я что-то сделал в controller
@Post('save')
async save(@Body() dto: User): Promise<ResponseDTO> {
// below is a interface to define the data strcture
const result: ResponseDTO = { code: null, data: null }
await this.service.save(dto).then(v => {
result.code = 1456; // custom code
result.data = { id: v.id }; // the data from service
}).catch(() => {
result.code = 500;
})
return result
}
Однако то, как я поступил, не очень хорошо. Потому что мне нужно инициализировать ResponseDTO
в каждом controller
. Поэтому я надеюсь, что interceptor
может помочь controller
сделать это.
Я знаю, как ввести перехватчик, но я не знаю, как написать код (не код состояний, это означает логический код) в перехватчике.