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

218
Vistas
Cómo usar un modelo en otro modelo

Tengo dos modelos separados, nombre de empleado y usuario con algunos datos comunes y un ID de cuenta para vincularse entre sí. Un registro para cada modelo es el siguiente:

 Employee _id:1639137618164 name:"*****" sites:Array company:”Software” jobTitle: “Associate Software Engineer” email:"*****" phonesms:"1" phonevoice:"1" licenseNumber:"" avatarStamp:0 pined:false accountId: 1639129314021 //link attribute countryCodeSms:"US" countryCodeVoice:"US" inviteCode:"09611" emergencyRoles: Object invite: "booksRbUoSM"

y para el usuario es

 _id:1639129314021 firstName:"*** ***" lastName:"****" companyName:"SITS" passwordReset:"" activated:true accountId:1639129314021 // link attribute siteId:-1 role:0 last:1639137913873 blocked:false blockedtext:"" trialend:1640338913781 paytype:1 hashAccess:Array emergencyEnabled:false visitorTypes:Array sitesLimit:2 manualCreation:false username:"*************" password:"**********************************" email:"*********************" passwordNotification:true passwordLifecycle:1646906375986 isNewUser:true listFeature:Object

Quiero buscar desde el modelo de usuario si existe algún empleado con ese identificador de cuenta o no, si hay un empleado asociado con el identificador de cuenta, luego agregar un nuevo empleado con los datos comunes disponibles. de otra forma no. ¿Cómo puedo hacer esto en bucle invertido? ¡Estoy atrapado aquí!

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Estoy usando loopback versión 2.xx Resulta ser muy simple

 currentModel.app.models.modelYouWantToAccess
about 4 years ago · Santiago Gelvez Denunciar

0

Prueba con abajo

 var employee_data = Employee .filter(x => User.map(y => y.accountId).includes(x.accountId));
about 4 years ago · Santiago Gelvez Denunciar

0

En bucle invertido 4

Solución 1:

En su controlador de usuario donde tiene acceso al UserRepository

Suponiendo que conoce el ID de cuenta y el ID de cuenta solo existe si tiene un registro de empleado, puede tener un método

 @get('/users/{accountId}) async findUserWhoIsAnEmployee(@param.path.string('accountId') accountId: string){ return this.userRepository.findOne({where: {accountId}}) }

Suponiendo que no conoce el ID de cuenta...

Puede acceder al repositorio de empleados en su UserController pasándolo como un argumento en la función constructora y encontrando al usuario, luego verificando el registro de Empleado. (No es óptimo ya que se realizarán dos consultas en su base de datos)

 export class UserController{ constructor( @repository(UserRepository) public userRepository: UserRepository, @repository(EmployeeRepository) private employeeRepository: EmployeeRepository ) // returns employee record or null if none @get('/users/{id}/employee-record) async findUserWhoIsAnEmployee(@param.path.string('id') id: string){ const user = await this.userRepository.findById(id); return (!user) ? null : this.employeeRepository.findOne({where: {accountId: user.accountId}}) } }

Solución 2:

Donde tenga una relación entre el Modelo de Usuario y Empleado ( preferiblemente hasOne )

Puede encontrar ese registro de empleado en el usuario

 // returns employee record of a user if exists @get('/users/{id}) async findUserWhoIsAnEmployee(@param.path.string('id') id: string){ return this.userRepository.findById(id).employeeRecord() } //Where employeeRecord is a reference property on the user Model.
about 4 years ago · Santiago Gelvez 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