Timestamps

If you want to have automatic timestamps, you can add the timestamps option to the @Definition decorator. This will add createdAt and updatedAt properties to your class. Those properties will be automatically set when creating or updating an entity so you will likely want to skip them in the create and update scopes.

Usage

import { GraphQLISODateTime } from '@nestjs/graphql';
 
@Definition({ timestamps: true })
export class User {
  @Id()
  id: ObjectId;
 
  @Property()
  name: string;
 
  @Property({
    output: { type: () => GraphQLISODateTime },
    create: Skip,
    update: Skip,
  })
  createdAt: Date;
 
  @Property({
    output: { type: () => GraphQLISODateTime },
    create: Skip,
    update: Skip,
  })
  updatedAt: Date;
}

Reusable decorator

You can define @AutoTimestamp decorator to reuse it on your properties

import { GraphQLISODateTime } from '@nestjs/graphql';
 
export const AutoTimestamp = () => {
  return Property({
    output: { type: () => GraphQLISODateTime },
    create: Skip,
    update: Skip,
  });
}
import { GraphQLISODateTime } from '@nestjs/graphql';
 
@Definition({ timestamps: true })
export class User {
  @Id()
  id: ObjectId;
 
  @Property()
  name: string;
 
  @AutoTimestamp()
  createdAt: Date;
 
  @AutoTimestamp()
  updatedAt: Date;
}