前のレッスンでは、CatalogService の submitOrder アクションを作成しました。データベーステーブルのアクセス方法に関する知識がまだ不足しているため、このアクションの実装はまだ完了していません。次はこれを学びます。
submitOrder アクションを実装するには、以下の 2 つのデータベースアクセスが必要です。
- 発注済帳簿の現在の在庫が発注済数量以上であることを確認する必要があります。これを行うには、データベースから現在在庫を選択する必要があります。
- 在庫に十分な帳簿があり、したがって受注が実行される場合、現在在庫を減らす必要があります。つまり、データベースの在庫を適宜更新する必要があります。
流暢な API
cds.ql モジュールは、このようなデータベースクエリを構築するための SQL のような API を提供します。以下の図は、シナリオに必要なクエリを示しています。

API は、グローバルオブジェクト SELECT、INSERT、UPSERT、UPDATE、および DELETE を介して利用可能になります。
注記
12const cds = require('@sap/cds');
const { SELECT, INSERT, UPSERT, UPDATE, DELETE } = cds.ql;一覧表示された CRUD オブジェクトを介して利用可能な API は、流暢な API として設計されています。つまり、これらのオブジェクトで使用可能なメソッドは、同じタイプのオブジェクトを返します。例で使用されている SELECT オブジェクトの .one プロパティなど、使用可能なプロパティにも、値と同じタイプのオブジェクトがあります。これにより、コーディングを直感的かつ読みやすくする連鎖が可能になります。
注記
アクセスするデータベーステーブルを識別するために、この例では Books エンティティの CSN 定義を使用します。これが推奨されるアプローチです。
タグ付きテンプレートを含む流暢な API
上記の従来のメソッド呼出の代わりに、fluent API をタグ付けされたテンプレートとともに使用することもできます。以下の図は、タグ付けされたテンプレートを使用して、上記の従来のメソッドコールを使用して構築されたクエリを登録する方法を示しています。どちらの場合も、結果は同じです。

注記


