本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
BatchGetItem
BatchGetItem
请求对象允许您告诉 D AWS AppSync ynamoDB 函数向 DynamoDB 发出BatchGetItem
请求,以检索多个项目,可能跨多个表。对于该请求对象,您必须指定以下内容:
-
要从中检索项目的表名称
-
要从每个表中检索的项目的键
DynamoDB BatchGetItem
限制适用,并且无法提供任何条件表达式。
BatchGetItem
请求对象具有以下结构:
type DynamoDBBatchGetItemRequest = { operation: 'BatchGetItem'; tables: { [tableName: string]: { keys: { [key: string]: any }[]; consistentRead?: boolean; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; }; }; };
字段定义如下:
BatchGetItem 字段
-
operation
-
要执行的 DynamoDB 操作。要执行
BatchGetItem
DynamoDB 操作,该字段必须设置为BatchGetItem
。该值为必填项。 -
tables
-
要从中检索项目的 DynamoDB 表。该值是一个映射,其中表名称被指定为映射的键。必须提供至少一个表。该
tables
值为必填项。-
keys
-
DynamoDB 键列表,表示要检索的项目的主键。DynamoDB 项目可能具有单个哈希键,也可能具有哈希键和排序键,具体取决于表结构。有关如何指定“类型化值”的更多信息,请参阅类型系统(请求映射)。
-
consistentRead
-
执行GetItem操作时是否使用一致性读取。此值是可选的,默认为 false。
projection
-
用于指定从 DynamoDB 操作返回的属性的投影。有关投影的更多信息,请参阅投影。该字段是可选的。
-
要记住的事项:
-
如果尚未从表中检索某个项目,则 null 元素将显示在该表的数据块中。
-
根据在请求对象中提供调用结果的顺序,将按表对这些结果进行排序。
-
BatchGetItem
中的每个Get
命令都是原子性的,但可以部分处理一个批次。如果由于错误而部分处理了批次,则未处理的密钥将作为区块内部调用结果的一部分返回。unprocessedKeys -
BatchGetItem
限制为 100 个键。
对于以下示例函数请求处理程序:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'BatchGetItem', tables: { authors: [util.dynamodb.toMapValues({ authorId })], posts: [util.dynamodb.toMapValues({ authorId, postId })], }, }; }
ctx.result
中可用的调用结果如下所示:
{ "data": { "authors": [null], "posts": [ // Was retrieved { "authorId": "a1", "postId": "p2", "postTitle": "title", "postDescription": "description", } ] }, "unprocessedKeys": { "authors": [ // This item was not processed due to an error { "authorId": "a1" } ], "posts": [] } }
ctx.error
包含有关该错误的详细信息。函数请求对象的结果中提供的键unprocessedKeys、数据、和每个表键都保证出现在调用结果中。已删除的项目显示在数据块中。尚未处理的项目在数据块内被标记为空并放置在数据unprocessedKeys块内。