

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Scan
<a name="js-aws-appsync-resolver-reference-dynamodb-scan"></a>

`Scan` リクエストでは、 AWS AppSync DynamoDB 関数に DynamoDB への`Scan`リクエストを行うように指示し、以下を指定できます。
+ 結果を除外するフィルタ
+ 使用するインデックス
+ 返す項目の数
+ 整合性のある読み込みを使用するかどうか
+ ページ分割トークン
+ 並列スキャン

`Scan` リクエストオブジェクトのノードの構造は次のとおりです。

```
type DynamoDBScanRequest = {
  operation: 'Scan';
  index?: string;
  limit?: number;
  consistentRead?: boolean;
  nextToken?: string;
  totalSegments?: number;
  segment?: number;
  filter?: {
    expression: string;
    expressionNames?: { [key: string]: string };
    expressionValues?: { [key: string]: any };
  };
  projection?: {
    expression: string;
    expressionNames?: { [key: string]: string };
  };
};
```

各フィールドの定義は以下のようになります。

## Scan フィールド
<a name="js-scan-list"></a>

### Scan フィールドリスト
<a name="js-scan-list-col"></a>

** `operation` **  
実行する DynamoDB の処理。`Scan` DynamoDB の処理を実行するには、これを `Scan` に設定する必要があります。この値は必須です。

** `filter` **  
DynamoDB からの結果が返される前に、その結果をフィルタリングするために使用するフィルタです。フィルタの詳細については、「[フィルタ](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-filter)」を参照してください。このフィールドはオプションです。

** `index` **  
クエリを実行するインデックスの名前です。DynamoDB クエリの処理により、ハッシュキーのプライマリキーインデックスに加えて、ローカルセカンダリインデックスとグローバルセカンダリインデックスをスキャンできます。指定されると、DynamoDB が指定されたインデックスにクエリを実行します。省略すると、プライマリキーインデックスに対してクエリが実行されます。

** `limit` **  
一度に評価する項目の最大数です。このフィールドはオプションです。

** `consistentRead` **  
DynamoDB にクエリを実行する際に整合性のある読み込みを使用するかどうかを示すブール値です。このフィールドはオプションであり、デフォルトは `false` です。

** `nextToken` **  
前のクエリを継続するためのページ分割トークンです。これは前のクエリから取得されます。このフィールドはオプションです。

** `select` **  
デフォルトでは、 AWS AppSync DynamoDB 関数はインデックスに射影される属性のみを返します。より多くの属性が必要な場合にこのフィールドを設定します。このフィールドはオプションです。サポートされている値には以下があります。    
** `ALL_ATTRIBUTES` **  
指定されたテーブルまたはインデックスのすべての項目の属性を返します。ローカルセカンダリインデックスに対してクエリを実行する場合、DynamoDB は、親のテーブルからインデックスの項目に一致したすべての項目をフェッチします。インデックスがすべての項目の属性を射影するように設定されている場合、すべてのデータはローカルセカンダリインデックスから取得されるため、フェッチは必要ありません。  
** `ALL_PROJECTED_ATTRIBUTES` **  
インデックスにクエリを実行する場合のみ使用できます。インデックスに投射されたすべての属性を取得します。インデックスがすべての属性を投射するように設定されている場合、この返り値は `ALL_ATTRIBUTES` を指定した場合と同等になります。  
**`SPECIFIC_ATTRIBUTES`**  
`projection` の `expression` にリストされている属性のみを返します。この戻り値は、`Select` の値を指定せずに `projection` の `expression` を指定するのと同じです。

** `totalSegments` **  
並列スキャンが実行されるまでにテーブルを分割するセグメントの数です。このフィールドはオプションですが、`segment` を指定した場合には指定する必要があります。

** `segment` **  
並列スキャンの実行時のこの処理でのテーブルセグメントです。このフィールドはオプションですが、`totalSegments` を指定した場合には指定する必要があります。

**`projection`**  
DynamoDB オペレーションから返される属性を指定するために使用されるプロジェクション。プロジェクションの詳細については、「[プロジェクション](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-projections)」を参照してください。このフィールドはオプションです。

DynamoDB スキャンにより返された結果が自動的に GraphQL プリミティブ型と JSON プリミティブ型に変換され、コンテキスト結果 (`context.result`) で参照できます。

DynamoDB の型変換の詳細については、「[型システム (リクエストマッピング)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-responses)」を参照してください。

JavaScript リゾルバーの詳細については、「[JavaScript リゾルバーの概要](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html)」を参照してください。

結果は以下の構造を持ちます。

```
{
    items = [ ... ],
    nextToken = "a pagination token",
    scannedCount = 10
}
```

各フィールドの定義は以下のようになります。

** `items` **  
DynamoDB スキャンにより返された項目を含むリストです。

** `nextToken` **  
さらに結果がある場合、 には、別のリクエストで使用できるページ分割トークン`nextToken`が含まれています。 AWS AppSync は、DynamoDB から返されるページ分割トークンを暗号化して難読化します。これにより、テーブルデータが誤って呼び出し元に漏えいされるのを防ぎます。また、これらのページ分割トークンは異なる関数間では使用できません。

** `scannedCount` **  
フィルタ式 (ある場合) が適用される前に、DynamoDB により取得された項目の数です。

## 例 1
<a name="js-id11"></a>

次の例は、GraphQLクエリ: `allPosts` の関数リクエストハンドラーです。

この例では、テーブル内のすべてのエントリが返されます。

```
export function request(ctx) {
  return { operation: 'Scan' };
}
```

## 例 2
<a name="js-id12"></a>

次の例は、GraphQLクエリ: `postsMatching(title: String!)` の関数リクエストハンドラーです。

この例では、タイトルが `title` 引数で始まるテーブル内のすべてのエントリが返されます。

```
export function request(ctx) {
  const { title } = ctx.args;
  const filter = { filter: { beginsWith: title } };
  return {
    operation: 'Scan',
    filter: JSON.parse(util.transform.toDynamoDBFilterExpression(filter)),
  };
}
```

DynamoDB `Scan` API の詳細については、「[DynamoDB API のドキュメント](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)」を参照してください。