Xoá dữ liệu

Tiếp theo chúng ta sẽ tạo một mutation mới để xoá dữ liệu trong DynamoDB

  1. Chọn tab Schema ở menu bên trái
  • Thêm đoạn code dưới đây vào kiểu Mutation để thêm một mutation mới là deletePost
    deletePost(id: ID!, expectedVersion: Int): Post
  • Sau đó ấn Save Schema
  • Tiếp theo trong ngăn Resolvers ở bên phải, tìm trường deletePost thuộc kiểu Mutation, sau đó chọn Attach

CreateAddPostResolver

  1. Tại trang cấu hình Attach resolver:
  • Resolver type: Chọn Unit resolver
  • Resolver runtime: Chọn Velocity Template Language (VTL)
  • Data source name: Chọn PostDynamoDBTable
  • Ấn nút Create màu cam.
  1. Tại trang soạn thảo mã của Resolver vừa tạo:
  • Xóa mã mặc định và dán nội dung dưới đây vào phần Configure the request mapping template (Mẫu ánh xạ yêu cầu):
{
    "version" : "2017-02-28",
    "operation" : "DeleteItem",
    "key": {
        "id": $util.dynamodb.toDynamoDBJson($context.arguments.id)
    }
    #if( $context.arguments.containsKey("expectedVersion") )
        ,"condition" : {
            "expression"       : "attribute_not_exists(id) OR version = :expectedVersion",
            "expressionValues" : {
                ":expectedVersion" : $util.dynamodb.toDynamoDBJson($context.arguments.expectedVersion)
            }
        }
    #end
}
  • Kéo xuống dưới, xóa mã mặc định và dán nội dung dưới đây vào mục Configure the response mapping template (Mẫu ánh xạ phản hồi):
#if($context.error)
  $util.error($context.error.message, $context.error.type)
#end
$util.toJson($context.result)
  • Sau đó ấn Save ở góc trang để lưu lại

CreateAddPostResolver

  1. Chọn tab Queries ở menu bên trái
  • Xóa mã mặc định, dán đoạn lệnh dưới đây vào phần Queries, sau đó ấn nút Run (biểu tượng Play màu cam)
mutation deletePost {
  deletePost(id:"123") {
    id
    author
    title
    content
    url
    ups
    downs
    version
  }
}

CreateAddPostResolver

  1. Ấn nút Run (biểu tượng Play màu cam) lần nữa, kết quả trả về NULL vì bạn đã xoá bài đăng ở bước trước

CreateAddPostResolver

  1. Xóa mã cũ, dán đoạn lệnh dưới đây vào phần Queries, sau đó ấn nút Run (biểu tượng Play màu cam) để thêm một bài đăng mới
mutation addPost {
  addPost(
    id:"123"
    author: "AUTHORNAME"
    title: "Our second post!"
    content: "A new post."
    url: "https://aws.amazon.com/appsync/"
  ) {
    id
    author
    title
    content
    url
    ups
    downs
    version
  }
}

CreateAddPostResolver

  1. Xóa mã cũ, dán đoạn lệnh dưới đây vào phần Queries, sau đó ấn nút Run (biểu tượng Play màu cam) để xoá bài đăng với điều kiện expectedVersion là 9999
mutation deletePost {
  deletePost(
    id:"123"
    expectedVersion: 9999
  ) {
    id
    author
    title
    content
    url
    ups
    downs
    version
  }
}

CreateAddPostResolver

Yêu cầu không thành công vì biểu thức điều kiện đánh giá là sai: giá trị cho version của bài đăng trong DynamoDB không khớp với expectedVersion được chỉ định trong các đối số. Giá trị hiện tại của đối tượng được trả về trong trường dữ liệu trong phần lỗi của phản hồi GraphQL.

  1. Chỉnh lại giá trị của expectedVersion thành 1, sau đó ấn nút Run (biểu tượng Play màu cam)

CreateAddPostResolver

Yêu cầu đã thành công và bài đăng đã được xoá khỏi DynamoDB