リモートオブジェクトのクエリ条件の形式およびオプション
リモートオブジェクトは、オブジェクトを使用して retrieve() 操作の条件を指定します。クエリで where、limit、および offset 条件を指定するには、このオブジェクトを使用します。
クエリオブジェクトの構造化された形式により、保存時に Visualforce で条件を検証できるため、ランタイムエラーの可能性を低減できます。形式は簡単です。
このクエリ条件は、Marc Benioff という名前の取引先責任者を検索し、クエリを絞り込んで 1 つの結果を取得します。
1<apex:remoteObjectsjsNamespace="RemoteObjectModel">
2 <apex:remoteObjectModel name="Contact" fields="FirstName,LastName"/>
3</apex:remoteObjects>
4
5<script>
6var ct = new RemoteObjectModel.Contact();
7ct.retrieve(
8 { where: {
9 FirstName: {eq: 'Marc'},
10 LastName: {eq: 'Benioff'}
11 },
12 orderby: [ {LastName: 'ASC'}, {FirstName: 'ASC'} ],
13 limit: 1 },
14
15 function(err, records) {
16 if (err) {
17 alert(err);
18 } else {
19 console.log(records.length);
20 console.log(records[0]);
21 }
22 }
23);
24</script>where 条件
where 条件を使用して、SOQL クエリの WHERE 条件とほぼ同じ方法で取得操作の結果を絞り込むことができます。where 条件で使用できる演算子は次のとおりです。
- eq: 等しい
- ne: 等しくない (≠)
- lt: より小さい
- lte: 以下 (<=)
- gt: より大きい
- gte: 以上 (>=)
- like: 文字列照合。SOQL と同様に、ワイルドカード文字として「%」を使用します。
- in: in、一連のいずれかの固定値に一致する値を検索するために使用します。['Benioff', 'Jobs', 'Gates'] のように、値を配列として指定します。
- nin: not in、一連のどの固定値にも一致しない値を検索するために使用します。['Benioff', 'Jobs', 'Gates'] のように、値を配列として指定します。
- and: 条件を結合するために使用する論理 AND
- or: 条件を結合するために使用する論理 OR
where オブジェクト内で項目名と条件のペアを追加して、複雑な条件を作成します。デフォルトでは、複数の条件は AND 条件として扱われます。and および or を使用して、他の条件を作成できます。次に例を示します。
1{
2where:
3 {
4 or:
5 {
6 FirstName: { like: "M%" },
7 Phone: { like: '(415)%' }
8 }
9 }
10}lte と gte の組み合わせを使用して、日付範囲に基づいて結果を絞り込みます。次に例を示します。
1<apex:remoteObjects jsNamespace="RemoteObjectModel">
2 <apex:remoteObjectModel name="Account" fields="Id,Name,CreatedDate"/>
3</apex:remoteObjects>
4
5<script>
6 var account_created_from_date = new Date('2017-01-01');
7 var account_created_to_date = new Date('2018-01-01');
8 var clauses = {
9 'where': {
10 'CreatedDate': { 'lte': account_created_to_date },
11 'and': {
12 'CreatedDate': { 'gte': account_created_from_date },
13 'Id': { 'ne': '' }
14 }
15 }
16 };
17
18 var ct = new RemoteObjectModel.Account();
19 ct.retrieve(
20 clauses,
21 function(err, records) {
22 if (err) {
23 console.log(err);
24 } else {
25 console.log(records.length);
26 console.log(records[0]);
27 }
28 }
29 );
30</script>orderby 条件
orderby で、結果の並び替え順を設定できます。最大で 3 項目まで並び替えできます。
名前-値のペアを含む JavaScript オブジェクト配列として、orderby 条件を指定します。並び替える項目が名前で、並び替えの説明が値です。並び替えの説明では、昇順または降順、および Null 値を最初または最後に並び替えることができます。次に例を示します。
1orderby: [ {Phone: "DESC NULLS LAST"} , {FirstName: "ASC"} ]limit および offset 条件
limit および offset を使用して、指定の数のレコードを一度に取得したり、拡張された結果セットをページ操作したりできます。
limit を使用して、結果の 1 つのバッチで返されるレコード数を指定します。デフォルト値は 20 です。最大値は 100 です。
offset を使用して、返される結果にレコードを追加する前に結果セット全体でスキップするレコード数を指定します。最小値は 1 です。最大オフセットは 2,000 行です。2,000 より大きいオフセットを要求すると NUMBER_OUTSIDE_VALID_RANGE エラーが発生します。