乐闻世界logo
搜索文章和话题

Node .js add created_at and updated_at in entity of typeorm

4 个月前提问
3 个月前修改
浏览次数31

1个答案

1

在使用 TypeORM 时,为实体自动添加 created_atupdated_at 字段是一种常见的需求,这两个字段分别用来记录数据的创建时间和最后更新时间。为实体添加这两个字段的方法如下:

1. 定义实体

首先,我们需要定义一个实体。在这个实体中,我们将添加 created_atupdated_at 字段。这两个字段可以通过使用 TypeORM 的装饰器来自动管理。

typescript
import { 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. 使用 CreateDateColumnUpdateDateColumn

在上面的代码中,我们使用了 CreateDateColumnUpdateDateColumn 装饰器:

  • CreateDateColumn 装饰器用于自动设置和更新 created_at 字段。这个字段只在实体首次保存时设置一次。
  • UpdateDateColumn 装饰器用于自动设置和更新 updated_at 字段。这个字段会在每次更新实体时重新设置。

3. 配置数据库

确保数据库支持时间戳字段。大多数现代数据库系统(如 PostgreSQL, MySQL, SQLite 等)都支持自动时间戳。

4. 使用实体进行操作

当你创建或更新实体时,TypeORM 会自动处理这两个字段。例如:

typescript
import { 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_atupdated_at 字段的值。不需要手动操作这些字段。

结论

使用 TypeORM 的 CreateDateColumnUpdateDateColumn 装饰器可以简便地管理记录的创建和更新时间,这样可以帮助我们更好地追踪数据的变动历史。

2024年6月29日 12:07 回复

你的答案