

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

# 投影
<a name="js-aws-appsync-resolver-reference-dynamodb-projections"></a>

使用 `GetItem`、`BatchGetItem`、、 `Scan` `Query`和 `TransactGetItems`操作讀取 DynamoDB 中的物件時，您可以選擇指定投影，以識別您想要的屬性。投影屬性具有下列結構，類似於篩選條件：

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

欄位定義如下：

** `expression` **  
投影表達式，這是字串。若要擷取單一屬性，請指定其名稱。對於多個屬性，名稱必須是逗號分隔值。如需撰寫投影表達式的詳細資訊，請參閱 [DynamoDB 投影表達](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ProjectionExpressions.html)式文件。此欄位為必填。

** `expressionNames` **  
以鍵/值對形式取代表達式屬性*名稱*預留位置。索引鍵對應至用於 `expression` 的名稱預留位置。值必須是對應於 DynamoDB 中項目屬性名稱的字串。此欄位是選用的，應僅填入 中使用的表達式屬性名稱預留位置的替換`expression`。如需 的詳細資訊`expressionNames`，請參閱 [DynamoDB 文件](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html)。

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

下列範例是 JavaScript 函數的投影區段，其中只有屬性 `id` `author`和 會從 DynamoDB 傳回：

```
projection : {
    expression : "#author, id",
    expressionNames : {
        "#author" : "author"
    }
}
```

**提示**  
您可以使用 [selectionSetList](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference-js.html#aws-appsync-resolver-context-reference-info-js) 存取 GraphQL 請求選取集。此欄位可讓您根據您的需求動態架構投影表達式。

**注意**  
搭配 `Query`和 `Scan`操作使用投影表達式時， 的值`select`必須是 `SPECIFIC_ATTRIBUTES`。如需詳細資訊，請參閱 [DynamoDB 文件](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-Select)。