¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Errores al crear un nuevo Reporte en una aplicación CAP en Node.js: Solución al TypeError indefinido

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Buenas tardes,
Estoy desarrollando una aplicación CAP en Node.js que expone un servicio (TicketsService) compuesto por dos entidades:

  1. Tickets : entidad principal, proyección de una entidad remota.
  2. Reports : entidad local, asociada a Tickets donde la relación Tickets:Reports es 1:*.

Reports utiliza el aspecto cuid , por lo que el campo de ID se genera automáticamente al crear un nuevo Reporte.

Sin implementar manejadores personalizados, puedo ejecutar con éxito operaciones CRUD en la entidad Reports aprovechando los proveedores genéricos proporcionados por CAP.

Luego implementé los manejadores personalizados de TicketsService para gestionar las lecturas de Tickets (que funcionan bien), así como el manejador READ en la entidad Reports .

Luego, llegó el momento del manejador CREATE, que simplemente definí de la siguiente manera:

this.on("CREATE", Reports, async (req, next) => {
    return await cds.run(req.query);
})<br>

ya que no tengo que manejar lógica personalizada para la creación de Reports .

El problema ocurre cuando intento enviar una solicitud POST para crear un nuevo Reporte:

[cds] - ❗️TypeError no capturado: No se pueden leer propiedades de indefinido (leyendo 'ID')
    en UriHelper.buildEntityKeys (/home/user/projects/reg-reports/node_modules/@sap/cds/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/utils/UriHelper.js:85:22)
    en ResponseHeaderSetter.setLocationHeader (/home/user/projects/reg-reports/node_modules/@sap/cds/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/core/ResponseHeaderSetter.js:102:17)
    en SetResponseHeadersCommand.execute (/home/user/projects/reg-reports/node_modules/@sap/cds/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/SetResponseHeadersCommand.js:66:30)
    en CommandExecutor._execute (/home/user/projects/reg-reports/node_modules/@sap/cds/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-server/invocation/CommandExecutor.js:71:17)
    en /home/user/projects/reg-reports/node_modules/@sap/cds/libx/_runtime/cds-services/adapter/odata-v4/okra/odata-
            
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Logré resolver el problema. La instrucción problemática era:

return await super.init();

que no estaba siendo llamada en el método on.init() dentro del controlador.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?