BatchDeleteItem - AWS AppSync GraphQL

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

BatchDeleteItem

BatchDeleteItem请求对象允许您告诉 D AWS AppSync ynamoDB 函数向 DynamoDB BatchWriteItem 请求删除多个项目,可能跨多个表。对于该请求对象,您必须指定以下内容:

  • 要从中删除项目的表名称

  • 要从每个表中删除的项目的键

DynamoDB BatchWriteItem 限制适用,并且无法提供任何条件表达式

BatchDeleteItem 请求对象具有以下结构:

type DynamoDBBatchDeleteItemRequest = { operation: 'BatchDeleteItem'; tables: { [tableName: string]: { [key: string]: any }[]; }; };

字段定义如下:

BatchDeleteItem 字段

operation

要执行的 DynamoDB 操作。要执行 BatchDeleteItem DynamoDB 操作,该字段必须设置为 BatchDeleteItem。该值为必填项。

tables

要从中删除项目的 DynamoDB 表。每个表是 DynamoDB 键列表,表示要删除的项目的主键。DynamoDB 项目可能具有单个哈希键,也可能具有哈希键和排序键,具体取决于表结构。有关如何指定“类型化值”的更多信息,请参阅类型系统(请求映射)。必须提供至少一个表。tables 值是必需的。

要记住的事项:

  • DeleteItem 操作相反,响应中不会返回完全删除的项目。只返回传递的键。

  • 如果尚未从表中删除某个项目,null 元素将显示在该表的数据块中。

  • 根据在请求对象中提供调用结果的顺序,将按表对这些结果进行排序。

  • BatchDeleteItem 中的每个 Delete 命令都是原子性的。但是,可以部分处理一个批处理。如果由于错误而部分处理一个批处理,则未处理的键将作为 unprocessedKeys 块内的调用结果的一部分返回。

  • BatchDeleteItem 限制为 25 个键。

  • 支持与冲突检测功能一起使用此操作。两者同时使用可能会导致错误。

对于以下示例函数请求处理程序:

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'BatchDeleteItem', tables: { authors: [util.dynamodb.toMapValues({ authorId })], posts: [util.dynamodb.toMapValues({ authorId, postId })], }, }; }

ctx.result 中可用的调用结果如下所示:

{ "data": { "authors": [null], "posts": [ // Was deleted { "authorId": "a1", "postId": "p2" } ] }, "unprocessedKeys": { "authors": [ // This key was not processed due to an error { "authorId": "a1" } ], "posts": [] } }

ctx.error 包含有关该错误的详细信息。在调用结果中,确保会出现 dataunprocessedKeys 键以及在函数请求对象中提供的每个表键。已删除的项目存在于数据块中。尚未处理的项目将在数据块中标记为 null 并置于 unprocessedKeys 块中。