NestJS创建Item时cancellation字段违反非空约束报错
问题根因
你的报错是因为ItemsService的createItem方法中,调用repository执行入库操作时,遗漏了cancellation字段的赋值。
你在DTO中已经配置了cancellation非空校验,Postman也传了正确的值,但是在itemsRepository.save的入参对象里,只写了delivery字段,没写cancellation字段,数据库中该字段配置为非空,因此触发了非空约束报错。
修复方案
修改ItemsService的createItem方法,在save的入参中补充cancellation字段即可:
async createItem(createItemDto: CreateItemDto, user: User): Promise<Item> { const newItem = await this.itemsRepository.save({ name: createItemDto.name, description: createItemDto.description, price: createItemDto.price, delivery: createItemDto.delivery, // 补充cancellation字段赋值 cancellation: createItemDto.cancellation, rating: createItemDto.rating, imageUrl: createItemDto.imageUrl, }); user.items = [...user.items, newItem]; await user.save(); return newItem; }
修改后重启服务即可正常创建Item。
内容的提问来源于stack exchange,提问作者Marko Marchisio
相关产品推荐
相关产品推荐

