Mongoose auto timestamp

Table of contents

No heading

No headings in the article.

Let mongoose schema handle timestamps for you It's a little difficult to manage createdAt and updatedAt on each Create and Update operation.

We can have it handled by mongoose built-in features.There are three ways to add timestamps in mongoose schema

  1. createdAt and updatedAt in timestamp format.

    const mySchema = new mongoose.Schema(
     {
         name: String,
     }, 
     {
         timestamps: true,
     }
    );
    

    output: createdAt: 2021-02-02T06:12:26.668Z, updatedAt: 2021-02-02T06:12:48.930Z

  2. Timestamp with a custom field name By default, the names of the fields are createdAt and updatedAt. Customize the field names by setting timestamps.createdAt and timestamps.updatedAt.

    const mySchema = new mongoose.Schema(
     {
         name: String,
     }, 
     {
         timestamps: { createdAt: 'addedAt', updatedAt: 'modifiedAt' },
     }
    );
    

    output: addedAt: 2021-02-02T06:12:26.668Z, modifiedAt: 2021-02-02T06:12:48.930Z

  3. Timestamp with number format (double) By default, Mongoose uses new Date() to get the current time. If you want to overwrite the function Mongoose uses to get the current time, you can set the timestamps.currentTime option. Mongoose will call the timestamps.currentTime function whenever it needs to get the current time.

    const mySchema = new mongoose.Schema(
     {
         name: String,
         createdAt: Number,
         updatedAt: Number,
     }, 
     {
         timestamps: { currentTime: ()=> Date.now() },
     }
    );
    

    output: createdAt: 1612246845043, updatedAt: 1612246853068