En la lección anterior, creamos la acción suborden para el servicio de catálogo. La implementación de esta acción aún no está completa, ya que seguimos sin saber cómo acceder a las tablas de bases de datos. Aprenderemos esto a continuación.
Para implementar la acción envío de pedido, necesitamos los dos accesos a la base de datos siguientes:
- Queremos asegurarnos de que el stock actual del libro pedido sea mayor o igual que la cantidad pedida. Para ello, es necesario seleccionar el stock actual de la base de datos.
- Si hay suficientes libros en stock y, por lo tanto, se lleva a cabo el pedido, debemos reducir el stock actual. Esto significa que tenemos que actualizar el stock en la base de datos en consecuencia.
API fluida
El módulo cds.ql proporciona una API similar a SQL para construir tales consultas de base de datos. Las consultas necesarias para nuestro escenario se muestran en la siguiente figura.

La API está disponible mediante los objetos globales SELECT, INSERT, UPSERT, UPDATE y DELETE.
Nota
12const cds = require('@sap/cds');
const { SELECT, INSERT, UPSERT, UPDATE, DELETE } = cds.ql;La API disponible a través de los objetos CRUD enumerados está diseñada como una API fluida. Esto significa que los métodos disponibles en estos objetos devuelven objetos del mismo tipo. Las propiedades disponibles (como la propiedad .one del objeto SELECT utilizado en el ejemplo mostrado) también tienen objetos del mismo tipo que su valor. Esto permite encadenar, lo que hace que la codificación sea intuitiva y legible.
Nota
Para identificar la tabla de base de datos a la que se va a acceder, utilizamos la definición CSN de la entidad Libros en el ejemplo que se muestra. Este es el enfoque recomendado.
API fluida con plantillas etiquetadas
Como alternativa a las llamadas de método clásicas mostradas anteriormente, la API fluida también se puede utilizar con plantillas etiquetadas. La siguiente figura muestra cómo se pueden crear las consultas construidas anteriormente utilizando llamadas de método clásicas utilizando plantillas etiquetadas. El resultado es el mismo en ambos casos.

Nota


