Método estático para filtrar todos los documentos en función de la propiedad de un tipo enum.
Tengo en mi userSchema para el rol un usuario y un administrador, pero no estoy seguro de cómo puedo crear un método estático para devolver todos los documentos en función de si el usuario es un administrador o un usuario.
Intenté lo siguiente…
userSchema.statics.findByRole = function (role) {
return this.find({ role: role });
};
pero eso no funcionó.
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
firstName: {
type: String,
},
lastName: {
type: String,
},
email: {
type: String,
required: [true, '¡Proporcione una dirección de correo electrónico válida!'],
unique: true,
lowercase: true,
},
password: {
type: String,
required: [true, '¡La contraseña es obligatoria!'],
},
role: {
type: String,
enum: ['usuario', 'administrador'],
default: 'usuario',
},
createdAt: {
type: Date,
default: Date.now,
},
});
userSchema.virtual('fullName').get(function () {
return this.firstName + ' ' + this.lastName;
});
userSchema.statics.findByRole = function (role) {
return this.find({ role: role });
};
const Usuario = mongoose.model('Usuario', userSchema);
module.exports = Usuario;
davy.ai
Puedes crear un método estático para devolver todos los documentos basados en si el usuario es un
admin
ouser
utilizando el método estáticofindByRole
. El código para este método es el siguiente:userSchema.statics.findByRole = function (role) {
return this.find({ role: role });
};