Truy vấn dữ liệu

Khi bạn muốn truy vấn một vài dữ liệu theo thuộc tính nào đó thì phần này sẽ giúp bạn.

  1. Chọn tab Schema
  • Thêm đoạn code dưới đây vào kiểu Query để thêm một truy vấn mới là allPostsByAuthor
    allPostsByAuthor(author: String!, count: Int, nextToken: String): PaginatedPosts!
  • Sau đó ấn Save Schema

CreateAddPostResolver

  1. Tiếp theo trong ngăn Resolvers ở bên phải, tìm trường allPostsByAuthor thuộc kiểu Query, 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" : "Query",
    "index" : "author-index",
    "query" : {
      "expression": "author = :author",
        "expressionValues" : {
          ":author" : $util.dynamodb.toDynamoDBJson($context.arguments.author)
        }
    }
    #if( ${context.arguments.count} )
        ,"limit": $util.toJson($context.arguments.count)
    #end
    #if( ${context.arguments.nextToken} )
        ,"nextToken": "${context.arguments.nextToken}"
    #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
{
    "posts": $utils.toJson($context.result.items)
    #if( ${context.result.nextToken} )
        ,"nextToken": $util.toJson($context.result.nextToken)
    #end
}
  • Ấn Save ở góc trang để lưu lại

CreateAddPostResolver

  1. Chọn tab Queries ở menu bên trái
  • Dán đoạn lệnh dưới đây vào phần Queries để thêm một số bài mẫu mới:
mutation addPost {
  post1: addPost(id:"10" author: "Nadia" title: "The cutest dog in the world" content: "So cute. So very, very cute." url: "https://aws.amazon.com/appsync/" ) { author, title }
  post2: addPost(id:"11" author: "Nadia" title: "Did you know...?" content: "AppSync works offline?" url: "https://aws.amazon.com/appsync/" ) { author, title }
  post3: addPost(id:"12" author: "Steve" title: "I like GraphQL" content: "It's great" url: "https://aws.amazon.com/appsync/" ) { author, title }
}
  • Sau đó ấn nút Run (biểu tượng Play màu cam), chọn addPost (nếu có tùy chọn)

CreateAddPostResolver

  1. Xóa mã cũ và dán đoạn lệnh truy vấn dưới đây vào phần Queries:
query allPostsByAuthor {
  allPostsByAuthor(author: "Nadia") {
    posts {
      id
      title
    }
    nextToken
  }
}
  • Sau đó ấn nút Run (biểu tượng Play màu cam), chọn allPostsByAuthor (nếu có tùy chọn). Kết quả trả về là các bài đăng của tác giả Nadia

CreateAddPostResolver

  1. Đổi giá trị của trường author thành AUTHORNAME và thêm tham số count: 5
  • Ấn nút Run (biểu tượng Play màu cam)

CreateAddPostResolver

  1. Sao chép giá trị của trường nextToken ở kết quả trả về và gán làm tham số đầu vào cho truy vấn (tương tự như bài trước)
  • Ấn nút Run (biểu tượng Play màu cam), kết quả sẽ trả về dữ liệu của trang tiếp theo

CreateAddPostResolver