如何向猫鼬模式子字段添加时间戳?

Kev*_*Lee 3 mongoose mongodb mongoose-schema

我正在尝试在in和的子字段中添加createdAtupdatedAt时间戳otpgenerate: {}verify:{}

我知道使用会将和时间戳{ timestamps: true }添加到整个架构中。createdAtupdatedAt

const userSchema = new mongoose.Schema({    
    email: { type: String, unique: true },
    name: { type: String }, 
    mobileNumber: {
        isVerified: {type: Boolean, default: false},
        otp: {
            generate: {
              attempts: {type: Number, default: 0},
              total: {type: Number, default: 0},
              createdAt: {type: Date},
              updatedAt: {type: Date}
            },
            verify: {
              attempts: {type: Number, default: 0},
              total: {type: Number, default: 0},
              createdAt: {type: Date},
              updatedAt: {type: Date}
            }
          }
    }
}, { timestamps: true });
Run Code Online (Sandbox Code Playgroud)

将单独的时间戳添加到子字段的正确解决方案是什么?{timestamps: true}通过添加到子字段来执行相同的操作是否正确?

            generate: {
              attempts: {type: Number, default: 0},
              total: {type: Number, default: 0},
              {timestamps: true}
            },
            verify: {
              attempts: {type: Number, default: 0},
              total: {type: Number, default: 0},
              {timestamps: true}
            }
Run Code Online (Sandbox Code Playgroud)

tha*_*.ts 6

您必须为子字段定义一个单独的架构,然后将其用作子字段的类型。

const otpSchema = new mongoose.Schema({    
    attempts: { type: Number, default: 0 },
    total: { type: Number, default: 0 }
}, {
    _id: false, // omit _id fields for subfields
    timestamps: true // timestamps options for subfields
});

const userSchema = new mongoose.Schema({    
    email: { type: String, unique: true },
    name: { type: String }, 
    mobileNumber: {
        isVerified: { type: Boolean, default: false },
        otp: {
            generate: otpSchema, // use the defined schema
            verify: otpSchema
        }
    }
}, { timestamps: true });
Run Code Online (Sandbox Code Playgroud)