我在 nestjs 中发出帖子请求时遇到困难。要求我退货 ERROR: An error occurred in POST /api/fraud-rules in 8ms...
{
"isError": true,
"status": 500,
"name": "InternalError",
"message": "Cannot read property 'emailAddress' of undefined",
"data": null
}
我能够拦截请求并记录正文,但由于某种原因,请求只返回错误并且没有登录控制器。
user.controller.ts
@Post()
async create(@Body() createUserDto: CreateUserDto): Promise<User> {
console.log(createUserDto);
return await this.usersService.create(createUserDto);
}
user.service.ts
async create(createUserDto: CreateUserDto): Promise< User > {
let data: Prisma.UserCreateInput = {};
data = Object.assign(data, createFraudRuleDto);
return await this.usersRepository.create(data);
}
user.repository.ts
async create(data: Prisma.UserCreateInput): Promise<User | null> {
return this.prisma.user.create({ data });
}
我尝试在控制器中记录数据以查看输入的数据,但它没有记录到我的控制台中。
我使用 nest start --debug --watch
答案 0 :(得分:0)
错误的原因在我的 user.dto.ts 文件中
export class CreateUserDto implements IUser {
constructor(user: IUser) {
this.emailAddress = user.emailAddress;
....
}
}
显然,当发出请求时,我们调用的构造函数没有 user
。这导致了问题中的错误。
从上面重构到这个
export class CreateUserDto implements IUser {
constructor(user: IUser) {
if (user) {
this.emailAddress = user.emailAddress;
....
}
}
}
修复了问题。
感谢@MicaelLevi,@marco