如何在 typeorm 和 nest.js 中设置布尔验证
Posted
技术标签:
【中文标题】如何在 typeorm 和 nest.js 中设置布尔验证【英文标题】:How to set boolean validation in typeorm and nest.js 【发布时间】:2021-01-14 21:18:39 【问题描述】:我通过nest.js
和typeorm
开发了应用程序。该实体的验证方式如下。
我对@987654323@ 验证有一些疑问。
event.dto.ts
export class EventRequest
@IsInt()
id: number;
@IsInt()
userId: number;
@IsString()
title: string;
@IsDateString()
date: Date;
@IsBoolean()
islastDate: boolean;
event.entity.ts
@Entity('events')
export class Event extends BaseEntity
@PrimaryGeneratedColumn('increment', type: 'int' )
id: number;
@ManyToOne(type => User, user => user.events)
@JoinColumn()
readonly user?: User;
userId: User;
@Column('varchar')
title: string;
@Column('date')
date: Date;
@Column('bool')
isLastdate: boolean;
我向服务器发送以下请求
"id":0,
"userId":1,
"title":"mytest",
"date":"2011-10-05T14:48:00.000Z",
"isLastdate":0,
"beginTime":"2011-10-05T14:48:00.000Z",
"endTime":"2011-10-05T14:48:00.000Z",
"place":"Tokyo",
"labelCd":1,
"detail":"test"
返回以下错误。
我应该为boolean
设置什么值?
"statusCode": 400,
"message": [
"islastDate must be a boolean value"
],
"error": "Bad Request"
这是我上面生成的DB
实体。
mysql> desc events;
+------------+--------------+------+-----+----------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+----------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| date | date | NO | | NULL | |
| place | varchar(255) | NO | | NULL | |
| detail | varchar(255) | NO | | NULL | |
| createdAt | datetime(6) | NO | | CURRENT_TIMESTAMP(6) | |
| updatedAt | datetime(6) | NO | | CURRENT_TIMESTAMP(6) | |
| deletedAt | datetime(6) | YES | | NULL | |
| beginTime | time | NO | | NULL | |
| endTime | time | NO | | NULL | |
| labelCd | int(11) | NO | | NULL | |
| userId | int(11) | YES | MUL | NULL | |
| isLastdate | tinyint(4) | NO | | NULL | |
+------------+--------------+------+-----+----------------------+----------------+
我的理解有问题吗?
什么是布尔值?
谢谢
【问题讨论】:
【参考方案1】:您的请求数据中有错字,您的 DTO 中有 islastDate: boolean;
,实体文件中有 isLastdate: boolean;
。改变一个以匹配另一个,你应该没问题。
【讨论】:
【参考方案2】:我还试图更新我的实体中的一个布尔值,但是由 typeorm 生成的查询总是发送 0 无论我传递的是真还是假,替换 PUT 方法是 POST 方法就可以了我。 我还通过首先创建这些参数的 Dto 来传递参数,即为参数生成类型
【讨论】:
以上是关于如何在 typeorm 和 nest.js 中设置布尔验证的主要内容,如果未能解决你的问题,请参考以下文章
Nest.js + TypeORM + OpenApi 中虚拟(计算)列的最佳实践