https://github.com/sonyarianto/graphql-nodejs-concept
Learn to create GraphQL API with Node.js + GraphQL Yoga + In-memory database (a.k.a array). It's simple and it works.
https://github.com/sonyarianto/graphql-nodejs-concept
array graphql graphql-yoga javascript nodejs
Last synced: about 1 month ago
JSON representation
Learn to create GraphQL API with Node.js + GraphQL Yoga + In-memory database (a.k.a array). It's simple and it works.
- Host: GitHub
- URL: https://github.com/sonyarianto/graphql-nodejs-concept
- Owner: sonyarianto
- License: mit
- Created: 2021-02-05T04:07:58.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-07-14T01:29:16.000Z (about 2 years ago)
- Last Synced: 2025-02-28T20:37:47.006Z (7 months ago)
- Topics: array, graphql, graphql-yoga, javascript, nodejs
- Language: JavaScript
- Homepage: https://graphql-nodejs-concept.vercel.app
- Size: 183 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# graphql-nodejs-concept
Understanding GraphQL sometimes hard and confusing. That's why I create this simple project (using minimal framework and using array to represent a database). The goal is simple, to get idea about what is GraphQL and what GraphQL can do.In this imaginary project let say we have data of `artists` and `songs`. Songs have relation to artists.
All logic is on `index.mjs` file, so it should be simple.
After we understand about GraphQL, I think will be easy later if we want to replace the data layer with real connection to database.
## Libraries and tools used (see on `package.json`)
- `graphql`, as JS reference implementation for GraphQL.
- `graphql-yoga`, as GraphQL server.
- `nodemon`, just a tool that helps develop Node.js based applications by automatically restarting the node application when file changes in the directory are detected.## Sample data
```js
const dataArtists = [
{ id: 1, name: "Peter Cetera" },
{ id: 2, name: "Dewa 19" },
{ id: 3, name: "Tito Soemarsono" },
{ id: 4, name: "Natalie Imbruglia" },
{ id: 5, name: "David Foster" },
{ id: 6, name: "Kahitna" },
]const dataSongs = [
{ id: 1, title: "One Clear Voice", artistId: 1 },
{ id: 2, title: "Kangen", artistId: 2 },
{ id: 3, title: "Diam-diam", artistId: 3 },
{ id: 4, title: "Torn", artistId: 4 },
{ id: 5, title: "The Best of Me", artistId: 5 },
{ id: 6, title: "Cantik", artistId: 6 },
{ id: 7, title: "Cerita Cinta", artistId: 6 },
]
```## Query methods
- `songs`, to get all songs
- `song`, to get particular song by id
- `artists`, to get all artists
- `artist`, to get particular song by id## Mutation methods
- `addSong`, to add new song to array
- `updateSong`, to update particular song by id
- `deleteSong`, to delete particular song by id
- `addArtist`, to add new artist to array
- `updateArtist`, to update particular artist by id
- `deleteArtist`, to delete particular artist by id## Screenshot

## How to run?
- Clone the repository
- Go to the project folder
- Run `npm install`
- Run `npm run dev`A web server will run on `localhost:5000`.
You can go to `http://localhost:5000/graphql` it will show the GraphiQL Yoga screen. You can try query there, let type the sample below.
```graphql
query {
artists {
id
name
songs {
id
title
}
}
}
```It will get list of all `artists` data.
## License
MIT
Maintained by Sony Arianto Kurniawan <> and contributors.