首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nestjsx/crud + TypeORM: patch和post结果为空请求

在使用 nestjsx/crud 结合 TypeORM 进行开发时,如果遇到 PATCHPOST 请求结果为空的情况,可能是由于以下几个原因导致的:

基础概念

  1. PATCH: 用于对资源进行部分更新。
  2. POST: 用于创建新的资源。

可能的原因及解决方法

1. 请求体为空或不正确

确保客户端发送的请求体是正确的,并且包含了需要更新或创建的数据。

解决方法:

  • 检查前端发送请求时的数据格式。
  • 使用工具如 Postman 来模拟请求,验证请求体是否正确。

2. 控制器中的方法实现问题

确保在控制器中正确实现了 createOneupdateOne 方法。

示例代码:

代码语言:txt
复制
import { Controller } from '@nestjs/common';
import { Crud, Override, ParsedRequest, ParsedBody, CreateManyDto } from '@nestjsx/crud';
import { YourEntityService } from './your-entity.service';
import { YourEntity } from './your-entity.entity';

@Crud({
  model: {
    type: YourEntity,
  },
})
@Controller('your-entity')
export class YourEntityController {
  constructor(public service: YourEntityService) {}

  @Override()
  createOne(@ParsedRequest() req: any, @ParsedBody() dto: YourEntity) {
    return this.service.create(dto);
  }

  @Override()
  updateOne(@ParsedRequest() req: any, @ParsedBody() dto: YourEntity) {
    return this.service.update(req.params.id, dto);
  }
}

3. TypeORM 实体定义问题

确保实体类正确地映射了数据库表,并且字段定义无误。

示例代码:

代码语言:txt
复制
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
export class YourEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  // 其他字段...
}

4. 服务层实现问题

确保服务层的方法正确处理了数据的创建和更新逻辑。

示例代码:

代码语言:txt
复制
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { YourEntity } from './your-entity.entity';

@Injectable()
export class YourEntityService {
  constructor(
    @InjectRepository(YourEntity)
    private readonly repository: Repository<YourEntity>,
  ) {}

  async create(dto: YourEntity): Promise<YourEntity> {
    return this.repository.save(dto);
  }

  async update(id: number, dto: YourEntity): Promise<YourEntity> {
    await this.repository.update(id, dto);
    return this.repository.findOne(id);
  }
}

5. 中间件或拦截器问题

如果有使用中间件或拦截器,确保它们没有意外地修改或清空了请求体。

解决方法:

  • 检查所有中间件和拦截器的逻辑,确保它们不会影响请求体的内容。

6. 数据库连接问题

确保数据库连接正常,并且应用程序有权限进行数据的创建和更新操作。

解决方法:

  • 检查数据库日志,查看是否有相关的错误信息。
  • 确保数据库用户具有足够的权限。

应用场景

  • PATCH: 适用于需要部分更新资源的情况,如用户信息的某些字段更新。
  • POST: 适用于创建新资源的场景,如新增用户、商品等。

总结

通过以上步骤,可以逐步排查并解决 PATCHPOST 请求结果为空的问题。确保每个环节都正确无误,特别是请求体的格式、控制器和服务层的实现,以及数据库的连接和权限设置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Nest.js 快速入门:实现对 Mysql 单表的 CRUD

基础 mysql 数据库和 Typeorm 首先从离前端比较远的数据库讲起。...Nest.js 结合 Typeorm Typeorm 是做把对象的操作通过 sql 同步为对数据库操作的 orm 的,而 Nest.js 是做 Web 后端应用的 MVC 分层以及通过 IOC 管理对象的创建和依赖的...和 Nest.js 都是做什么的和怎么用,简单小结一下: Typeorm 是 ORM 框架,用于把对象的操作同步为对数据库的操作,会自动执行 sql 语句。...我们重点来看下 Controller 的代码: import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common...@Get、@Post、@Patch、@Delete 分别对应不同的请求方式。 @Param 是取路径中的参数,@Query 是取查询字符串的参数。

4.2K30

使用 NextJS 和 TailwindCSS 重构我的个人博客

getStaticProps 在构建时请求数据。...}, //当请求进入的时候再次生成文章详情页,比如修改文章重新生成 // 1s 内最多生成1次 revalidate: 1, } } export default Post...Prisma 支持 Mysql、Postgresql 和 Sqlite, 访问官网我们可以很容易的上手,也可以快速的从老项目接入 虽然 Prisma 和 TypeORM 解决了类似的问题,但它们的工作方式却大相径庭...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...Prisma CRUD 查询由 Prisma Client 提供,这是一个针对 Node.js 和 TypeScript 的轻量级且完全类型安全的数据库客户端。

2.7K20
  • 使用 NextJS 和 TailwindCSS 重构我的博客

    getStaticProps 在构建时请求数据。...}, //当请求进入的时候再次生成文章详情页,比如修改文章重新生成 // 1s 内最多生成1次 revalidate: 1, } } export default Post...Prisma 支持 Mysql、Postgresql 和 Sqlite, 访问官网我们可以很容易的上手,也可以快速的从老项目接入 虽然 Prisma 和 TypeORM 解决了类似的问题,但它们的工作方式却大相径庭...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...Prisma CRUD 查询由 Prisma Client 提供,这是一个针对 Node.js 和 TypeScript 的轻量级且完全类型安全的数据库客户端。

    2.4K20

    学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    // 可以匹配到 post请求,http://localhost:9080/app/list @Post("list") create():string{...} // 2.通配符路径...这里要提一个关于路由匹配时的注意点, 当我们有一个put请求,路径为/app/list/user,此时,我们在app.controller.ts控制器文件中增加一个方法: @Put("list/user...)模块作为案例, 实现文章简单的CRUD,带大家熟悉一下这个过程。...CRUD 好了,接下来就进行数据操作,前面我们说通过代码来建表, TypeORM是通过实体映射到数据库表,所以我们先建立一个文章实体PostsEntity,在posts目录下创建posts.entity.ts...什么意思呢, 通俗来讲就是,对请求接口的入参进行验证和转换的前置操作,验证好了我才会将内容给到路由对应的方法中去,失败了就进入异常过滤器中。

    14.6K65

    学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    // 可以匹配到 post请求,http://localhost:9080/app/list @Post("list") create():string{...} // 2.通配符路径...这里要提一个关于路由匹配时的注意点, 当我们有一个put请求,路径为/app/list/user,此时,我们在app.controller.ts控制器文件中增加一个方法: @Put("list/user...)模块作为案例, 实现文章简单的CRUD,带大家熟悉一下这个过程。...CRUD 好了,接下来就进行数据操作,前面我们说通过代码来建表, TypeORM是通过实体映射到数据库表,所以我们先建立一个文章实体PostsEntity,在posts目录下创建posts.entity.ts...什么意思呢, 通俗来讲就是,对请求接口的入参进行验证和转换的前置操作,验证好了我才会将内容给到路由对应的方法中去,失败了就进入异常过滤器中。

    10.5K11

    20. 精读《Nestjs》

    Components 一般用于做 Services,比如将数据库 CRUD 封装在 Services 中,每个 Service 就是一个 Component。...UsersController { @Get('users') getAllUsers() {} @Get('users/:id') getUser() {} @Post...3.1 Typeorm 有了如此强大的后端框架,必须搭配上同等强大的 orm 才能发挥最大功力,Typeorm 就是最好的选择之一。...至于类型,Typeorm 通过反射,拿到了类型定义,自动识别 id 为数字类型、name 为字符串类型,当然也可以手动设置 type 参数。...这带来的好处就是,我们放心执行任何 CRUD 语句,完全不需要做错误处理,当校验失败或者数据库操作失败时,会自动终止执行后续代码,并返回给客户端友好的提示: @Post() async add( @

    4K20

    RESTful简介

    400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。...get/post/put/delete为CRUD操作 面向资源,一目了然,具有自解释性。 数据描述简单,一般以xml,json做数据交换。...适合CRUD并且只适合CRUD,有的浏览器可能不支持POST、GET之外的提交方式,要特殊处理,API容易给让误解中能进行增、删、查、改等操作。...CRUD:是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。

    88820

    有了 Prisma,就别用 TypeORM 了

    当你使用 userRepository.findOne({ where: { id: null } }) 时,从开发者的预期来看所返回的结果应该为 null 才对,但结果却是大跌眼镜,结果所返回的是 user...我举几个例子: 在 TypeORM 中,你需要 select 选择某个实体的几个字段,你可以这么写 你会发现 post 对象的类型提示依旧还是 postEntity,没有任何变化。...但从开发者的体验角度而言,**既然我选择查询 id 和 title 两个字段,那么你所返回的 post 类型应该也只有 id 与 title 才更符合预期。...**而后续代码中由于允许 post 有 body 属性提示,那么 post.body 为 null 这样不必要的结果。...许多涉及多表的 CRUD操作可以通过一条简洁的表达式来完成,而在使用 TypeORM 时,常常需要编写繁琐臃肿的 queryBuilder。

    2.7K22

    RESTful规范

    POST一般向“资源集合”型uri发起 POST/animals  //新增动物 POST/zoos/1/employees //为id为1的动物园雇佣员工 PUT:更新单个资源(全量),客户端提供完整的更新后的资源...安全性 幂等性 GET √ √ POST × × PUT × √ DELETE × √ 安全性和幂等性均不保证反复请求能拿到相同的response。...§200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 §201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...§400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...各HTTP方法成功处理后的数据格式: · response 格式 GET 单个对象、集合 POST 新增成功的对象 PUT/PATCH 更新成功的对象 DELETE 空 五、错误处理 1.

    2.1K00

    使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由和HTTP方法

    这里对应的HTTP方法是POST。 POST请求的参数通常存放在请求的body里面,所以公司的信息就放在了body里面。...HTTP 用来表示更新信息的方法是 PATCH,所以整个请求时 PATCH api/companies/{companyId}。注意PATCH表示对资源进行局部更新。...和POST一样,PATCH的参数也位于请求的body里面。例如,如果你想更新公司的名称,那么就要把新的公司名称放在body里面。 PATCH的请求无需返回任何东西。...和 POST 一样,PUT的参数也位于请求的body里面。 如果是替换现有资源,那么无需返回任何东西;但如果是创建资源的操作,就应该返回新创建的资源。...例如,DELETE api/companies/12 并不意味着id为12的公司信息从数据库中被删除了,也许只是把该公司的信息的状态设置为deleted而已。

    1.3K10

    混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

    前端内部写的后端应用基本上功能并不会太多(太专业的后端服务交给后端开发来做),绝大部分是基础的操作,在这样的情况下会涉及到很多重复工作量要做,基本都是一样的套路: 初始化项目脚手架 数据库的连接操作 + CRUD...这两种模式没有谁比谁好之分,只有适不适合之别: 简单的 CRUD、试水型的 Demo 项目,用 Active Records 模式的 ORM 框架更好 业务流程和规则较多的、成熟的项目改造用 Data...不同于现有的所有其他 JavaScript ORM 框架,TypeORM 支持 Active Record 和 Data Mapper 模式(在我这次写的项目中,使用的是 Active Record...小结 距离上次写 Node.js 后台应用有段时间了,当时的技术栈和现在的没法比,现在尤其得益于使用 Decorator(装饰器语法) + DI(依赖注入)风格写业务逻辑,再搭配使用 typeorm (...参考文章 ORM 实例教程:阮一峰教程,解释 ORM,通俗易懂 架构模式中的 Active Record 和 Data Mapper 什么是 ActiveRecord 模式 typeorm数据库ORM框架中文文档

    3.3K20

    基于 Nest.js+TypeORM 实战,项目已开源,推荐!

    数据表关系 前面文章中已经说了TypeORM建表时,是通过@Entity()装饰的class 映射为数据表, 所以实体中的关系也就是表关系。...接下来探索一下如何用TypeORM创建一对一、一对多和多对多的关系。 一对一 一对一指的是表中一条数据仅关联另外一个表中的另一条数据。例如用户表和用户档案表, 一个用户只有一份档案。...我们在TypeORM中如何实现user表和info之间这种对一对的关系呢?...,其中User和Category与 Post是一对多关系,而Tag与Post是多对多。...然后需要对分类和标签的插入进行处理,同时还需要判断status是草稿draft还是发布publish, 如果是publish,需要设置publishTime为当前时间。

    11.2K41

    RESTful 接口实现简明指南

    REST 对请求的约定 REST 用来规范应用如何在 HTTP 层与 API 提供方进行数据交互;在现阶段,你应该已经很熟悉 GET 和 POST 请求;甚至有可能因为受限于后端框架限制等原因,你的整个应用全都是用这两种...请求的方法 在很多系统中,几乎只用 GET 和 POST 方法来完成了所有的接口操作;这个行为类似于全用 DIV 来布局。...实际上,我们不只有GET 和 POST 可用,在 REST 架构中,有以下几个重要的请求方法:GET,POST,PUT,PATCH,DELETE。这几个方法都可以与对数据的 CRUD 操作对应起来。...POST /api/users { "name": "John Snow" } 【Update】资源的更新,用于更新的 HTTP 方法有两个,PUT 和 PATCH。...比如下面这面这个接口就表示搜索 ID 为 123 的图书馆的书,并且书的信息里包含关键字「game」,返回前十条满足条件的结果。 GET /api/libraries/123/books?

    1.1K10

    restful api接口规范和服务调用的区别_rest接口规范

    Request HTTP方法 通过标准HTTP方法对资源CRUD: GET:查询 GET /zoos GET /zoos/1 GET /zoos/1/employees POST:创建单个资源。...POST一般向“资源集合”型uri发起 POST /animals //新增动物 POST /zoos/1/employees //为id为1的动物园雇佣员工 PUT:更新单个资源(全量),客户端提供完整的更新后的资源...安全性和幂等性 安全性:不会改变资源状态,可以理解为只读的; 幂等性:执行1次和执行N次,对资源状态改变的效果是等价的。 ....安全性 幂等性 GET √ √ POST × × PUT × √ DELETE × √ 安全性和幂等性均不保证反复请求能拿到相同的response。...新增成功的对象 PUT/PATCH 更新成功的对象 DELETE 空 json格式的约定: 时间用长整形(毫秒数),客户端自己按需解析(moment.js) 不传null字段 分页response

    1.8K10
    领券