You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:36:04