Soy nuevo en el desarrollo backend. Estoy tratando de crear puntos finales de perfil para obtener todos los perfiles con el género del usuario masculino o femenino.
El perfil contiene al usuario como ID de objeto.
Quiero filtrar perfiles usando el género de los usuarios.
Mi UserSchema se ve así
const userSchema = mongoose.Schema( { firstname: { type: String, required: true, trim: true, }, lastname: { type: String, required: true, trim: true, }, email: { type: String, required: true, unique: true, trim: true, lowercase: true, validate(value) { if (!validator.isEmail(value)) { throw new Error('Invalid email'); } }, }, password: { type: String, required: true, trim: true, minlength: 8, validate(value) { if (!value.match(/\d/) || !value.match(/[a-zA-Z]/)) { throw new Error('Password must contain at least one letter and one number'); } }, private: true, // used by the toJSON plugin }, role: { type: String, enum: roles, default: 'user', }, gender: { type: String, enum: genders, required: true, }, profileStatus: { type: String, enum: profileStatus, default: 'inProgress', }, isEmailVerified: { type: Boolean, default: false, }, }, { timestamps: true, } );Y el esquema de perfil se ve así
const profileSchema = new Schema( { user: { type: Schema.Types.ObjectId, ref: 'User', required: true, unique: true }, bio: { type: String, required: true }, profilePicUrl: { type: String, required: true, }, birthdate: { type: Date, required: true, }, profession: { type: String, required: true, }, profileCompletion: { type: Number, default: 50, min: 0, max: 100, }, credits: { type: Number, default: 2, min: 0, }, lastLogin: { type: Date, default: new Date(), required: true, }, }, { timestamps: true } );Quiero encontrar perfiles donde el género del usuario sea masculino o femenino.
¿Cómo puedo hacer eso?
Puede crear un punto final como este y usar .find() para encontrar todos los usuarios con el género pasado por el usuario
router.get(/user/:gender, async (req, res) => { try { const users = await User.find({ gender: req.params.gender }).exec(); res.status(200).json(users); } catch (err) { return res.status(500); } })