Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
JHipster Angular usa la salida de la consulta como entrada de la siguiente consulta

Estoy tratando de escribir un código donde un Servicio de curso angular recibe la identificación de inicio de sesión de un estudiante para enumerar todos los cursos en los que se inscribe el estudiante. Este resultado luego se canaliza a otro servicio que toma el resultado de la primera consulta como su entrada.

 teachers: ITeacher[]; this.courseService.query({ 'stdId.equals': this.account?.login, }).pipe( map(data=> { this.teacherService.query({ 'courseId.in': data.body, }).subscribe((res: HttpResponse<ITeacher[]>) => { this.teachers = res.body; }) }) );

El problema es que puedo ver los resultados en data.body, pero no puedo obtener los valores reales de los datos. P.ej. Si trato de obtener los valores como data.body.id, recibo un mensaje de error que dice que no hay una identificación de campo en la clase o interfaz. Soy nuevo en Angular, así que estas son mis preguntas:

  1. ¿Es esta la forma correcta de hacer lo que planeo hacer? Si no, ¿cuál es la forma correcta?
  2. ¿Cómo obtengo los valores de los campos específicos como id de data.body?

Cualquier ayuda es muy apreciada.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Le sugiero encarecidamente que use un Observable como su "objetivo" final. En lugar de tener teachers como una matriz estática, tendría teachers$ , un Observable, que consumiría en el DOM con la canalización async o en cualquier otra parte de su código. Además, desea evitar suscribirse a Observables dentro de tuberías Observables (las llamadas de suscripción anidadas tienen un olor de código MALO).

Aquí está mi enfoque sugerido:

 teachers$: Observable<ITeacher[]>; this.teachers$ = this.courseService.query({ 'stdId.equals': this.account?.login, }).pipe( switchMap(data => this.teacherService.query({ 'courseId.in': data.body, })) );

Cuando necesite suscribirse a un Observable secundario desde dentro de un Observable principal (como en este caso), debe usar un operador de mapeo de orden superior como switchMap , concatMap , mergeMap o exhaustMap . Estos operadores difieren principalmente en sus modelos de concurrencia. Para este caso, dependiendo de cuántas solicitudes se puedan realizar potencialmente, es posible que desee cambiar de switchMap a otra cosa.

over 4 years ago · Santiago Trujillo Relatório

0

Aceptando la sugerencia de esta respuesta , simplemente agregaría la solución a la matriz de identificadores de curso de la siguiente manera:

 teachers$: Observable<ITeacher[]>; this.teachers$ = this.courseService.query({ 'stdId.equals': this.account?.login, }).pipe( map(data => data.body.map(({id}) => id)), map(data => this.teacherService.query({ 'courseId.in': data, })) );

No lo probé, pero creo que puedes probar esto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda