我们已宣布
使用响应对象
调用服务对象方法之后,它通过将 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。如果您处理可以处于故障状态的事件,请始终首先检查是否设置了 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();