我們宣布
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用回應物件
呼叫服務物件方法後,該方法即會將 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
成員會保留字串值,您將能透過 imageFile
的 S
子成員值來存取映像本身的檔案名稱。
瀏覽傳回的資料分頁
有時候,服務請求傳回的 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();