在使用 TypeORM 时,为实体自动添加 created_at
和 updated_at
字段是一种常见的需求,这两个字段分别用来记录数据的创建时间和最后更新时间。为实体添加这两个字段的方法如下:
1. 定义实体
首先,我们需要定义一个实体。在这个实体中,我们将添加 created_at
和 updated_at
字段。这两个字段可以通过使用 TypeORM 的装饰器来自动管理。
typescriptimport { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @CreateDateColumn({ type: 'timestamp', name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ type: 'timestamp', name: 'updated_at' }) updatedAt: Date; }
2. 使用 CreateDateColumn
和 UpdateDateColumn
在上面的代码中,我们使用了 CreateDateColumn
和 UpdateDateColumn
装饰器:
CreateDateColumn
装饰器用于自动设置和更新created_at
字段。这个字段只在实体首次保存时设置一次。UpdateDateColumn
装饰器用于自动设置和更新updated_at
字段。这个字段会在每次更新实体时重新设置。
3. 配置数据库
确保数据库支持时间戳字段。大多数现代数据库系统(如 PostgreSQL, MySQL, SQLite 等)都支持自动时间戳。
4. 使用实体进行操作
当你创建或更新实体时,TypeORM 会自动处理这两个字段。例如:
typescriptimport { getRepository } from 'typeorm'; import { User } from './User'; async function createUser() { const userRepository = getRepository(User); const newUser = userRepository.create({ name: 'John Doe' }); await userRepository.save(newUser); console.log(newUser); } async function updateUser(userId: number) { const userRepository = getRepository(User); const userToUpdate = await userRepository.findOne(userId); if (userToUpdate) { userToUpdate.name = 'Jane Doe'; await userRepository.save(userToUpdate); console.log(userToUpdate); } }
在这个例子中,每当我们调用 save
方法时,TypeORM 将自动更新 created_at
和 updated_at
字段的值。不需要手动操作这些字段。
结论
使用 TypeORM 的 CreateDateColumn
和 UpdateDateColumn
装饰器可以简便地管理记录的创建和更新时间,这样可以帮助我们更好地追踪数据的变动历史。
2024年6月29日 12:07 回复