

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 篩選條件
<a name="js-aws-appsync-resolver-reference-dynamodb-filter"></a>

使用 `Query`和 `Scan`操作查詢 DynamoDB 中的物件時，您可以選擇指定`filter`評估結果並僅傳回所需值的 。

`Query` 或 `Scan`請求的篩選條件屬性具有下列結構：

```
type DynamoDBExpression = {
  expression: string;
  expressionNames?: { [key: string]: string};
  expressionValues?: { [key: string]: any};
};
```

欄位定義如下：

** `expression` **  
查詢表達式。如需如何編寫篩選條件表達式的詳細資訊，請參閱 [DynamoDB QueryFilter](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html) 和 [DynamoDB ScanFilter](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ScanFilter.html) 文件。必須指定此欄位。

** `expressionNames` **  
表達式屬性 *name* 預留位置的替代，形式為鍵值組。索引鍵對應至用於 `expression` 的名稱預留位置。值必須是對應於 DynamoDB 中項目屬性名稱的字串。此欄位為選用的，應只能填入用於 `expression` 中表達式屬性名稱預留位置的替代。

** `expressionValues` **  
表達式屬性 *value* 預留位置的替代，形式為鍵值組。鍵對應用於 `expression` 的值預留位置，值必須是類型值。如需如何指定「輸入值」的詳細資訊，請參閱[類型系統 （請求映射）](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)。此必須指定。此欄位為選用的，應只能填入用於 `expression` 中表達式屬性值預留位置的替代。

## 範例
<a name="js-id18"></a>

下列範例是請求的篩選條件區段，只有在標題以 `title` 引數開頭時，才會傳回從 DynamoDB 擷取的項目。

在這裡，我們使用 從 物件`util.transform.toDynamoDBFilterExpression`自動建立篩選條件：

```
const filter = util.transform.toDynamoDBFilterExpression({
  title: { beginsWith: 'far away' },
});

const request = {};
request.filter = JSON.parse(filter);
```

這會產生下列篩選條件：

```
{
  "filter": {
    "expression": "(begins_with(#title,:title_beginsWith))",
    "expressionNames": { "#title": "title" },
    "expressionValues": {
      ":title_beginsWith": { "S": "far away" }
    }
  }
}
```