Node.js 在 typeorm 的实体中添加 created_at 和 updated_at

par*_*oid 5 node.js typeorm node.js-typeorm

我有这样的task实体:

import {BaseEntity, Column, Entity, PrimaryGeneratedColumn} from "typeorm";

@Entity()
export class Task extends BaseEntity{
    @PrimaryGeneratedColumn()
    id:number;

    @Column()
    title:string

   @Column()
    description:string

}
Run Code Online (Sandbox Code Playgroud)

我想向这个实体添加 created_at 和 updated_at 字段,并使用Node.js类似的Laravel框架自动填充它。我的数据库是postgres

Ahm*_*ifi 15

import { CreateDateColumn, UpdateDateColumn } from 'typeorm';

@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;

Run Code Online (Sandbox Code Playgroud)


Pen*_*ava 9

我们先导入

import { CreateDateColumn,UpdateDateColumn } from "typeorm";
Run Code Online (Sandbox Code Playgroud)

在实体中添加此字段和 decarators

@CreateDateColumn({ type: "timestamp", default: () => "CURRENT_TIMESTAMP(6)" })
public created_at: Date;

@UpdateDateColumn({ type: "timestamp", default: () => "CURRENT_TIMESTAMP(6)", onUpdate: "CURRENT_TIMESTAMP(6)" })
public updated_at: Date;
Run Code Online (Sandbox Code Playgroud)

  • 我注意到 Welisson Moura 的答案不包括“CreateDateColumn”和“UpdateDateColumn”装饰器的额外属性。您指定的额外属性有什么原因吗? (9认同)

小智 7

import {BaseEntity, Column, Entity, PrimaryGeneratedColumn, CreateDateColumn} from "typeorm";

@Entity()
export class Task extends BaseEntity{
    @PrimaryGeneratedColumn()
    id:number;

    @Column()
    title:string

   @Column()
    description:string
   
   @CreateDateColumn()
   created_at: Date;

   @UpdateDateColumn()
   updated_at: Date;


}
Run Code Online (Sandbox Code Playgroud)

  • @ShaSha你可以使用实体继承技术 (3认同)

小智 7

我尝试了您之前提到的所有方法,但唯一有效的方法就是这个。

import moment from "moment";

@CreateDateColumn()
  created_at: Date;

@UpdateDateColumn()
  updated_at: Date;

@BeforeInsert()
insertCreated() {
    this.created_at = new Date(
      moment().tz("America/Sao_Paulo").format("YYYY-MM-DD HH:mm:ss")
    );
    this.updated_at = new Date(
      moment().tz("America/Sao_Paulo").format("YYYY-MM-DD HH:mm:ss")
    );
  }

@BeforeUpdate()
insertUpdated() {
    this.updated_at = new Date(
      moment().tz("America/Sao_Paulo").format("YYYY-MM-DD HH:mm:ss")
    );
  }
Run Code Online (Sandbox Code Playgroud)