Node.js добавьте created_at и updated_at в объект typeorm

#node.js #typeorm #node.js-typeorm

#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

}
 

Я хочу добавить поля created_at и updated_at к этому объекту и автоматически заполнить его Node.js подобной Laravel структурой. Моя база данных postgres

Ответ №1:

Давайте сначала импортируем

 import { CreateDateColumn,UpdateDateColumn } from "typeorm";
 

Добавьте эти поля и разделители в объект

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

Комментарии:

1. Я заметил, что ответ Велиссона Моуры не включал дополнительные свойства для CreateDateColumn UpdateDateColumn декораторов и . Есть ли какая-либо причина для дополнительных свойств, которые вы указали?

Ответ №2:

 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;


}
 

Комментарии:

1. как насчет добавления полей временных меток ко всем объектам?

2. @ShaSha вы можете использовать метод наследования сущностей

Ответ №3:

 import { CreateDateColumn, UpdateDateColumn } from 'typeorm';

@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;

 

Ответ №4:

Я перепробовал все предыдущие способы, о которых вы сообщали, но единственный способ, который сработал, был этот.

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