este es mi schema . Quiero que caduque automáticamente este campo después de 5 minutos. ¿Cómo hago eso?
const userRegistrationSchema = new mongoose.Schema({ mobile: { type: Number, trim: true, }, email: { type: String, lowercase: true, trim: true }, // email Varification verified: { type: Boolean, }, otp: { type: Number, }, password: { type: String, trim: true, }, confirmPassword: { type: String, trim: true, },si el usuario ingresa este valor y otp almacena así
mobile: 9561300851 email: "xyz@gmail.com" verified: false otp: 8236y después de 5 minutos quiero que mis datos se vean como con el campo otp
mobile: 9561300851 email: "skcoder510@gmail.com" verified: falseEspero haber explicado mi problema y luego como hacerlo.
MongoDB admite la eliminación de documentos solo después de un cierto tiempo usando TTL. Sin embargo, para la eliminación de campos, lo que puede hacer es después de usar la OTP, puede eliminar el campo usando $unset.
https://www.mongodb.com/docs/manual/reference/operator/update/unset/
O bien, puede crear un programador que se ejecutará después de cierto tiempo y eliminará todo el campo OTP usado usando $unset.
AFAIK MongoDB solo admite TTL en documentos, no en campos: https://www.mongodb.com/docs/manual/core/index-ttl/
Podría considerar crear un esquema OTP separado que tenga un índice TTL de 5 minutos. La documentación relevante de Mongoose se puede encontrar aquí: https://mongoosejs.com/docs/api.html#schemadateoptions_SchemaDateOptions-expires