发布请求时,NestJS 请求返回 500

时间:2021-05-31 17:21:27

标签: node.js typescript nestjs

我在 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

运行应用程序

1 个答案:

答案 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