使用回應物件 - AWS SDK for JavaScript

我們宣布即將推出 end-of-support AWS SDK for JavaScript v2。建議您遷移至 AWS SDK for JavaScript v3。如需日期、其他詳細資訊和如何遷移的資訊,請參閱連結公告。

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

使用回應物件

呼叫服務物件方法後,該方法即會將 AWS.Response 物件傳遞至回呼函數,以便傳回相關內容。您可以透過 AWS.Response 物件的屬性來存取回應內容。AWS.Response 物件有兩種屬性可供您存取回應內容:

  • data 屬性

  • error 屬性

在使用標準回呼機制的情況下,系統會提供這兩種屬性並將其做為非同步回呼函數上的參數,如下方範例所示。

function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); } }

在回應物件中存取傳回的資料

AWS.Response 物件的 data 屬性包含服務請求所傳回的序列化資料。當請求成功時,data 屬性會包含一個物件,其中涵蓋所傳回資料的映射。如果發生錯誤,則 data 屬性可為 null。

以下是呼叫 DynamoDB 資料表getItem方法的範例,以擷取影像檔案名稱,作為遊戲的一部分。

// Initialize parameters needed to call DynamoDB var slotParams = { Key : {'slotPosition' : {N: '0'}}, TableName : 'slotWheels', ProjectionExpression: 'imageFile' }; // prepare request object for call to DynamoDB var request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams); // log the name of the image file to load in the slot machine request.on('success', function(response) { // logs a value like "cherries.jpg" returned from DynamoDB console.log(response.data.Item.imageFile.S); }); // submit DynamoDB request request.send();

在此範例中,DynamoDB 資料表是影像的查詢,其顯示 中參數指定的槽機器提取結果slotParams

成功呼叫getItem方法後,AWS.Response物件的 data 屬性會包含 DynamoDB 傳回的Item物件。您可以根據請求的 ProjectionExpression 參數來存取傳回的資料。在此案例中,該參數指的是 Item 物件的 imageFile 成員。由於 imageFile 成員會保留字串值,您將能透過 imageFileS 子成員值來存取映像本身的檔案名稱。

瀏覽傳回的資料分頁

有時候,服務請求傳回的 data 屬性內容會橫跨多個頁面。若要存取下一頁資料,請呼叫 response.nextPage 方法。這個方法會傳送新的請求。您能夠利用回呼、成功和錯誤接聽程式來擷取該請求的回應。

您可以呼叫 response.hasNextPage 方法,檢查服務請求傳回的資料是否有其他資料頁面。這個方法會傳回布林值,指出呼叫 response.nextPage 時是否有傳回其他資料。

s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) { // do something with response.data if (response.hasNextPage()) { response.nextPage().on('success', handlePage).send(); } }).send();

存取來自回應物件的錯誤資訊

當服務錯誤或傳輸錯誤時,AWS.Response 物件的 error 屬性會包含可用的錯誤資料。所傳回錯誤的格式如下。

{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }

若發生錯誤,data 屬性值即為 null。如果您要處理處於失敗狀態的事件,請務必在嘗試存取 data 屬性值前,隨時檢查該事件是否已設定 error 屬性。

存取來源請求物件

request 屬性可讓您存取來源 AWS.Request 物件。這可用來參照原始 AWS.Request 物件,以存取其所傳送的原始參數。在下方範例中,系統會使用 request 屬性來存取原始服務請求的 Key 參數。

s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) { console.log("Key was", response.request.params.Key); }).send();