Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

295
Vistas
Manera correcta de obtener un usuario por un atributo en mongoose nestjs

Tengo una colección de usuarios en la base de datos y quiero recuperar un usuario con un nombre de usuario específico. He escrito este método pero está devolviendo a todos los usuarios.

 findByUsername(username: string) { return this.userModel.find({ 'username' : username}) }

¿Por qué esta consulta no funciona? Controlador

 @Get('find/:username') getUserById(@Param("username") username : string) : any { console.log(username); return this.usersService.findByUsername(username); }

Esta es mi entidad de usuario

importar {Esquema, SchemaFactory} desde "@nestjs/mongoose"; importar {ApiProperty} desde "@nestjs/swagger";

tipo de exportación UserDocument = Usuario y documento;

 @Schema() export class User { @ApiProperty() id: string; @ApiProperty() username: string; @ApiProperty() email : string @ApiProperty() password: string; } export const UserSchema = SchemaFactory.createForClass(User);

este es el servicio

 import { Injectable } from "@nestjs/common"; import { InjectModel } from "@nestjs/mongoose"; import { Model } from "mongoose"; import { use } from "passport"; import {User,UserDocument} from '../users/entities/user.entity' // This should be a real class/interface representing a user entity @Injectable() export class UsersService { constructor( @InjectModel(User.name) private readonly userModel : Model<User> ) {} findById(userId: string) { } findByUsername(username: string) { return this.userModel.find({"username": username}).exec(); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Prueba esto:

 findByUsername(username: string) { return this.userModel.find({username: username}).exec(); }

o versión simplificada:

 findByUsername(username: string) { return this.userModel.find({username}).exec(); }

Brevemente, la causa es el campo 'nombre de usuario' escrito con comillas y falta el método .exec() al final de la cadena.

Además, el esquema debe prepararse para Mongoose decorando los campos con el decorador @Prop():

 import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; @Schema() export class User { @ApiProperty() @Prop() id: string; @ApiProperty() @Prop() username: string; @ApiProperty() @Prop() email : string @ApiProperty() @Prop() password: string; } export const UserSchema = SchemaFactory.createForClass(User);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar el método findOne en Mongoose:

 findByUsername(username: string) { return this.userModel.findOne({ username }) }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda