Ghi dữ liệu

Sau khi AWS AppSync nhận biết được bảng DynamoDB, chúng ta có thể truy vấn hoặc thay đổi nó bằng cách xác định các Resolver. Trong bước này chúng ta sẽ tạo resolver là addPost thuộc kiểu Mutation, cho phép chúng ta tạo bài đăng trong bảng AppSyncTutorial-Post.

  1. Chọn tab Schema ở menu bên trái
  • Trong ngăn Resolvers ở bên phải, tìm trường addPost 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
  • Kéo xuống dưới cùng và ấn nút Create màu cam.

CreateAddPostResolver

  1. Sau khi tạo xong, bạn sẽ được chuyển đến trang soạn thảo mã của Resolver. Tại đây:
  • 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" : "PutItem",
    "key" : {
        "id" : $util.dynamodb.toDynamoDBJson($context.arguments.id)
    },
    "attributeValues" : {
        "author" : $util.dynamodb.toDynamoDBJson($context.arguments.author),
        "title" : $util.dynamodb.toDynamoDBJson($context.arguments.title),
        "content" : $util.dynamodb.toDynamoDBJson($context.arguments.content),
        "url" : $util.dynamodb.toDynamoDBJson($context.arguments.url),
        "ups" : { "N" : 1 },
        "downs" : { "N" : 0 },
        "version" : { "N" : 1 }
    }
}

CreateAddPostResolver

Một Type được chỉ định trên tất cả các khoá và giá trị của thuộc tính. Ví dụ bạn đặt thuộc tính author thành { “S” : “${context.arguments.author}” }. Trong đó “S” là định nghĩa kiểu giá trị của thuộc tính author là một String, và giá trị được lấy từ đối số author mà người dùng truyền vào.

  1. 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):
$utils.toJson($context.result)

CreateAddPostResolver

Vì shape của dữ liệu trong bảng AppSyncTutorial-Post khớp hoàn toàn với shape của Post trong GraphQL, nên mẫu ánh xạ phản hồi chỉ chuyển thẳng kết quả từ bảng qua GraphQL.

  1. Ấn Save ở góc trang để lưu lại

CreateAddPostResolver

  1. Chọn tab Queries ở menu bên trái để thực hiện gọi API thêm một bài đăng vào cơ sở dữ liệu
  • Xóa mã mặc định trong khung soạn thảo, dán đoạn script dưới đây vào phần Queries, sau đó ấn nút Run (biểu tượng nút Play màu cam)
mutation addPost {
  addPost(
    id: 123
    author: "AUTHORNAME"
    title: "Our first post!"
    content: "This is our first post."
    url: "https://aws.amazon.com/appsync/"
  ) {
    id
    author
    title
    content
    url
    ups
    downs
    version
  }
}

CreateAddPostResolver

  1. Kết quả trả về tương tự như sau:
{
  "data": {
    "addPost": {
      "id": "123",
      "author": "AUTHORNAME",
      "title": "Our first post!",
      "content": "This is our first post.",
      "url": "https://aws.amazon.com/appsync/",
      "ups": 1,
      "downs": 0,
      "version": 1
    }
  }
}

CreateAddPostResolver

  1. Mở bảng điều khiển của DynamoDB

CreateAddPostResolver

  1. Chọn tab Explore table items
  • Chọn bảng AppSyncTutorial-Post, một bài đăng đã được ghi.

CreateAddPostResolver CreateAddPostResolver