使用响应对象 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for JavaScript v2 已终止支持。建议您迁移到 Amazon 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。如果您处理可以处于故障状态的事件,请始终首先检查是否设置了 error 属性,然后尝试访问 data 属性的值。

访问原始请求对象

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();