es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes crear un método estático para devolver todos los documentos basados en si el usuario es un admin o user utilizando el método estático findByRole. El código para este método es el siguiente:

    userSchema.statics.findByRole = function (role) {
    return this.find({ role: role });
    };

Comments are closed.