javascript - Aktuellt datum i TypeORM och PostgreSQL
Vad är det bästa sättet att ha ett fält för ett datum i PostgreSQL och TypeORM?
Jag är relativt ny på PostgreSQL (i allmänhet SQL-databaser), men i MongoDB (med Mongoose) har jag vanligtvis ett fält som detta:
export class User {
@Prop({ default: Date.now() })
createdAt: Date;
}
Vad skulle motsvarigheten till detta vara i TypeORM och PostgreSQL? För om jag använder detta tillvägagångssätt kastar PostgreSQL ett fel.
QueryFailedError: datum/tid-fältvärde utanför intervall: "1634416004545"
Svar #1
Jag vet att det är en gammal, men det är en jag stötte på idag och utan något godkänt svar, så jag tänkte att det kunde vara till hjälp för någon som mig i framtiden.
I grund och botten kommer problemet från att använda Date.now() istället för new Date(). Mitt fungerande exempel ser ut så här
@Column({ type: "timestamptz", default: () => "CURRENT_TIMESTAMP" })
createdDate: Date;
Om värdet inte anges kommer det att tilldela det aktuella värdet. Observera här att om du uppdaterar en rad och det nya värdet saknar fältet createdDate, kommer det gamla att skrivas över.
Om du sedan vill ställa in det manuellt använder du helt enkelt new Date() så här
const created = { ..., createdDate: new Date(), ...}
Svar #2
Du kan använda @CreateDateColumn-dekoreraren för att uppnå det du vill:
export class User {
@CreateDateColumn()
createdAt: Date;
}
