我在本地 matchine 上使用带有 Typeform 的 NestJs 来检索 Mysql DB 上的 Updated_at 和created_at。 在数据库上,记录显然存储在 UTC 中,但是在使用 find() 函数检索它之后。正如我在下面解释的那样,它已经再次转换为 UTC。正如 No.3 Nestjs(或 Typeorm)决定再次从 DB 转换时间。
这是我的实体
@Entity('designs')
export class DesignEntity {
@PrimaryGeneratedColumn()
id: number;
@OneToOne(() => ProjectEntity, (project) => project.design)
@JoinColumn()
project: ProjectEntity;
@Column({ type: 'json', nullable: true })
landData: any;
@Column({ type: 'json', nullable: true })
settingData: any;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date;
}
这是我的记录检索代码
const design = await this.designService.findOne({
where: {
project: {
id: proj.id
}
}
});
console.log(design.updatedAt)
原来,我需要设置 Typeorm 时区,所以它以 UTC 处理检索值。
在app.module.ts中
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [DatabaseConfigModule],
useFactory: (databaseConfigService: DatabaseConfigService) => ({
type: 'mysql',
host: databaseConfigService.DB_HOST,
port: databaseConfigService.DB_PORT,
username: databaseConfigService.DB_USERNAME,
password: databaseConfigService.DB_PASSWORD,
database: databaseConfigService.DB_NAME,
timezone: "UTC", // <- HERE
logging: false,
namingStrategy: new SnakeNamingStrategy(),
entities: ['dist/**/*.entity.js'],
synchronize: true,
}),
inject: [DatabaseConfigService],
}),
],
controllers: [],
providers: [],
})