Node.js add created_at and updated_at in entity of typeorm

Viewed 25748

I have task entity like this:

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

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

    @Column()
    title:string

   @Column()
    description:string

}

I want to add created_at and updated_at field to this entity and populate it automatically with Node.js like Laravel framework. My database is postgres

4 Answers

Let's import first

import { CreateDateColumn,UpdateDateColumn } from "typeorm";

Add this fields and decarators in Entity

@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;
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;


}
import { CreateDateColumn, UpdateDateColumn } from 'typeorm';

@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;

I tried all the previous ways you informed, but the only way that worked was this.

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")
    );
  }

Related