動的なレコード ID を使用して getRecords ワイヤアダプタを使用する場合は、レコードパラメータを単一のプロパティとして転送できる parameterObject 配列を作成することをお勧めします。配列を使用すれば、複数のオブジェクトのレコード ID と項目を定義できます。
たとえば、Apex コントローラで取引先ごとに取引先責任者 ID を取得し、それを parameterObject 配列に渡すことができます。配列は connectedCallback または renderedCallback で作成できます。また、親コンポーネントから、配列を初期化する子コンポーネントにレコードパラメータを渡すこともできます。
この例は、parameterObject 配列の設定方法を示しています。IDs オブジェクトには、getRecords ワイヤアダプタを使用して取得する連絡先レコードの ID が含まれています。
1import{LightningElement, api, wire}from "lwc";2import{getRecords}from "lightning/uiRecordApi";3// Import field references here for optionalFields45export default class DynamicIDExample extends LightningElement{6 parameterObject;78 connectedCallback(){9 this.parameterObject = [];1011 // Set the parameterObject with record IDs and optional fields.12 // The IDs object contains records you retrieved13 // from another wire adapter or Apex controller.14 if(this.IDs.length>0){15 this.IDs.forEach((contact)=>{16 this.parameterObject.push({17 recordIds:[contact.Id],18 optionalFields:[CONTACT_NAME_FIELD, CONTACT_PHONE_FIELD],19});20});21 // Push additional recordIDs and optionalFields for other objects22}23}2425 @wire(getRecords, {records: "$parameterObject"})26 wiredRecords({error, data}){27 if(data){28 console.log("data", JSON.parse(JSON.stringify(data)));29 data.results.forEach((record)=>{30 // Do something with the results31});32 this.error = undefined;33}else if(error){34 this.error = error;35}36}37}
ワイヤアダプタをコールすると、ユーザインターフェース API によって要求の SOQL クエリが作成されます。この SOQL クエリには 10 万文字の制限があります。この制限を超えることが予想される場合は、クエリを複数のクエリに分割してバッチで実行することをお勧めします。