Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
comprobando indefinido o nulo en javascript

Tengo el siguiente método en nestjs .

 async findOne(userId: string) { const user = await this.userRepository.find({userId}); if (user) { throw new NotFoundException(`User does not exist`); } return user; }

este método devuelve una array of object . si el valor no se encuentra en la base de datos, devuelve [{}] . Necesito lanzar una excepción cuando devuelve una empty array quiero decir [{}] . para eso necesito poner condition en if block cuando escribo user , o user==null o user.length==o en if block , en todo caso no va dentro del if

¿Qué modificación debo hacer en el bloque if ?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Me preguntaba por qué realmente necesitas usar el método de find .

Está tratando de obtener un usuario basado en el userId de usuario en el repositorio de usuarios, ¿no se supone que el ID de usuario es único?

Si es único, obtendrá una matriz vacía como describió o con solo un objeto en ella. No estoy seguro de qué base de datos está utilizando, pero en cualquier caso, el método findOne debería estar allí.

Si esto se aplica a su caso, findOne debería hacer el truco

 const user = await this.userRepository.findOne({ userId }); if (!user) throw new NotFoundException(`User does not exist`); return user;

O si tiene que usar find y desea que la declaración if sea más legible, sugiero usar Ramda , lodash o cualquier biblioteca similar para mantenerlo más limpio.

Con Ramda puedes hacer lo siguiente

 const [firstUser = {}, ...others] = await this.userRepository.find({ userId }); if(R.isEmpty(firstUser)) throw new NotFoundException(`User does not exist`); return [firstUser, ...others];

Supongo que los datos obtenidos en función del userId de usuario son solo un registro, por lo que creo que puede usarlos así

 const [user = {}] = await this.userRepository.find({ userId }); if(R.isEmpty(user)) throw new NotFoundException(`User does not exist`); return user;
about 4 years ago · Juan Pablo Isaza Report

0

Parece que necesita verificar si user es una matriz con longitud = 1 donde el primer elemento es un objeto vacío. Puedes hacer algo como esto:

 const user = await this.userRepository.find({ userId }); if ( !user || user.length === 0 || (user.length === 1 && Object.keys(user[0]).length === 0) ) { throw new NotFoundException(`User does not exist`); } return user;

Deberá buscar en su función userRepositoy.find() para ver si hay otros valores posibles que podría devolver. Según su descripción, devuelve una matriz de usuarios o una matriz con un solo objeto vacío. Sin embargo, puede haber otros casos de falla donde devuelve algo diferente. Esa parte depende de usted para asegurarse de manejar esos casos correctamente.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!