

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mulai dari skema GraphQL tanpa arahan
<a name="tools-graphql-start-from-schema"></a>

Anda dapat memulai dari database Neptunus kosong dan menggunakan skema GraphQL tanpa arahan untuk membuat data dan menanyakannya. Perintah di bawah ini secara otomatis membuat AWS sumber daya untuk melakukan ini:

```
neptune-for-graphql \
  --input-schema-file {{(your GraphQL schema file)}}
  --create-update-aws-pipeline \
  --create-update-aws-pipeline-name {{(name for your new GraphQL API)}} \
  --create-update-aws-pipeline-neptune-endpoint {{(your Neptune database endpoint)}}:{{(port number)}} \
  --output-resolver-query-https
```

File skema GraphQL harus menyertakan jenis skema GraphQL, seperti yang ditunjukkan pada contoh TODO di bawah ini. Utilitas menganalisis skema Anda dan membuat versi diperpanjang berdasarkan tipe Anda. Ini menambahkan kueri dan mutasi untuk node yang disimpan dalam database grafik, dan jika skema Anda memiliki tipe bersarang, itu menambahkan hubungan antara tipe yang disimpan sebagai tepi dalam database.

Utilitas membuat AppSync GraphQL API, dan semua AWS sumber daya yang dibutuhkan. Ini termasuk sepasang peran IAM dan fungsi Lambda yang berisi kode resolver GraphQL. Ketika perintah selesai, Anda dapat menemukan GraphQL API baru dengan nama yang Anda tentukan di konsol. AppSync Untuk mengujinya, gunakan **Query** di AppSync menu.

Contoh di bawah ini menggambarkan cara kerjanya:

## Contoh todo, mulai dari skema GraphQL tanpa arahan
<a name="tools-graphql-todo-example"></a>

Dalam contoh ini kita mulai dari skema Todo GraphQL tanpa arahan, yang dapat Anda temukan di direktori. {{???samples???}} Ini mencakup dua jenis ini:

```
type Todo {
  name: String
  description: String
  priority: Int
  status: String
  comments: [Comment]
}

type Comment {
  content: String
}
```

Perintah ini memproses skema Todo dan titik akhir database Neptunus kosong untuk membuat GraphQL API di: AWS AppSync

```
neptune-for-graphql /
  --input-schema-file ./samples/todo.schema.graphql \
  --create-update-aws-pipeline \
  --create-update-aws-pipeline-name TodoExample \
  --create-update-aws-pipeline-neptune-endpoint {{(empty Neptune database endpoint)}}:{{(port number)}} \
  --output-resolver-query-https
```

Utilitas membuat file baru di folder output yang disebut`TodoExample.source.graphql`, dan GraphQL API di. AppSync Utilitas menyimpulkan hal berikut:
+ Pada tipe Todo ditambahkan `@relationship` untuk CommentEdge tipe baru. Ini menginstruksikan resolver untuk menghubungkan Todo ke Komentar menggunakan tepi database grafik yang disebut. CommentEdge
+ Ia menambahkan input baru yang dipanggil TodoInput untuk membantu kueri dan mutasi.
+ Ini menambahkan dua kueri untuk setiap jenis (Todo, Komentar): satu untuk mengambil satu jenis menggunakan `id` atau salah satu bidang jenis yang tercantum dalam input, dan yang lainnya untuk mengambil beberapa nilai, disaring menggunakan input untuk jenis itu.
+ Ini menambahkan tiga mutasi untuk setiap jenis: buat, perbarui, dan hapus. Jenis yang akan dihapus ditentukan menggunakan `id` atau input untuk jenis itu. Mutasi ini mempengaruhi data yang disimpan dalam database Neptunus.
+ Ini menambahkan dua mutasi untuk koneksi: sambungkan dan hapus. Mereka mengambil sebagai input id node dari dari dan ke simpul yang digunakan oleh Neptunus dan koneksi adalah tepi dalam database.

[Penyelesai mengenali kueri dan mutasi berdasarkan namanya, tetapi Anda dapat menyesuaikannya seperti yang ditunjukkan di bawah ini.](tools.md)

Berikut adalah isi dari `TodoExample.source.graphql` file tersebut:

```
type Todo {
  _id: ID! @id
  name: String
  description: String
  priority: Int
  status: String
  comments(filter: CommentInput, options: Options): [Comment] @relationship(type: "CommentEdge", direction: OUT)
  bestComment: Comment @relationship(type: "CommentEdge", direction: OUT)
  commentEdge: CommentEdge
}

type Comment {
  _id: ID! @id
  content: String
}

input Options {
  limit: Int
}

input TodoInput {
  _id: ID @id
  name: String
  description: String
  priority: Int
  status: String
}

type CommentEdge {
  _id: ID! @id
}

input CommentInput {
  _id: ID @id
  content: String
}

input Options {
  limit: Int
}

type Query {
  getNodeTodo(filter: TodoInput, options: Options): Todo
  getNodeTodos(filter: TodoInput): [Todo]
  getNodeComment(filter: CommentInput, options: Options): Comment
  getNodeComments(filter: CommentInput): [Comment]
}

type Mutation {
  createNodeTodo(input: TodoInput!): Todo
  updateNodeTodo(input: TodoInput!): Todo
  deleteNodeTodo(_id: ID!): Boolean
  connectNodeTodoToNodeCommentEdgeCommentEdge(from_id: ID!, to_id: ID!): CommentEdge
  deleteEdgeCommentEdgeFromTodoToComment(from_id: ID!, to_id: ID!): Boolean
  createNodeComment(input: CommentInput!): Comment
  updateNodeComment(input: CommentInput!): Comment
  deleteNodeComment(_id: ID!): Boolean
}

schema {
  query: Query
  mutation: Mutation
}
```

Sekarang Anda dapat membuat dan meminta data. Berikut adalah snapshot dari konsol AppSync **Queries** yang digunakan untuk menguji GraphQL API baru, yang dinamai dalam kasus ini. `TodoExampleAPI` Di jendela tengah, Explorer menunjukkan daftar kueri dan mutasi dari mana Anda dapat memilih kueri, parameter input, dan bidang pengembalian. Screenshot ini menunjukkan pembuatan tipe node Todo menggunakan `createNodeTodo` mutasi:

![Screenshot yang menampilkan konsol AppSync Queries membuat node Todo](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/todoCreate.png)


Tangkapan layar ini menunjukkan kueri semua node Todo menggunakan kueri: `getNodeTodos`

![Screenshot yang menampilkan konsol AppSync Queries yang menanyakan node Todo](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/todoGetTodos.png)


Setelah membuat Komentar menggunakan`createNodeComment`, Anda dapat menggunakan `connectNodeTodoToNodeCommentEdgeCommentEdge` mutasi untuk menghubungkannya dengan menentukan id mereka. Berikut adalah kueri bersarang untuk mengambil Todos dan komentar terlampirnya:

![Screenshot yang menampilkan kueri bersarang untuk mengambil Todos dan komentar terlampirnya di konsol Queries AppSync](http://docs.aws.amazon.com/id_id/neptune/latest/userguide/images/todoNestedQuery.png)


Jika Anda ingin membuat perubahan pada `TodoExample.source.graphql` file seperti yang dijelaskan dalam [Bekerja dengan arahan](tools-graphql-schema-with-directives.md), Anda kemudian dapat menggunakan skema yang diedit sebagai input dan menjalankan utilitas lagi. Utilitas kemudian akan memodifikasi GraphQL API yang sesuai.