mysql - วิธีตั้งค่าการตรวจสอบแบบบูลีนใน typeorm และ nest.js
ฉันพัฒนาแอปด้วย nest.js และ typeorm เอนทิตีถูกตรวจสอบความถูกต้องดังนี้
ฉันมีคำถามบางอย่างเกี่ยวกับการตรวจสอบความถูกต้องของ boolean
event.dto.tsexport 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
มีการพิมพ์ผิดในข้อมูลคำขอของคุณ คุณมี islastDate: boolean; ใน DTO ของคุณ และ isLastdate: boolean; ในไฟล์ entity ของคุณ เปลี่ยนอันหนึ่งให้ตรงกับอีกอัน และคุณน่าจะใช้ได้
คำตอบ #2
ผมก็พยายามจะอัปเดตค่า boolean หนึ่งในเอนทิตี้ของผม แต่คิวรีที่สร้างโดย TypeORM มักจะส่ง 0 ไม่ว่าผมจะส่งค่า true หรือ false การเปลี่ยนวิธีจาก PUT เป็น POST ใช้ได้ผลกับผม นอกจากนี้ผมยังส่งพารามิเตอร์โดยการสร้าง Dto ของพารามิเตอร์เหล่านั้นก่อน คือการสร้าง type สำหรับพารามิเตอร์