היכרות עם GraphQL
דוגמאות הקוד מהוובינר זמינות אונליין בקישור:
https://github.com/tocodeil/webinar-live-demos/tree/master/20221006-graphql
Code Snippets
Github Query #1
query { user(login: "ynonp") { name location } }
Github Query #2
query { user(login: "ynonp") { name location url websiteUrl } }
Github Query #3
query { user(login: "ynonp") { name location url websiteUrl repositories(first: 10) { pageInfo { endCursor startCursor hasNextPage } totalCount nodes { name } } } }
graphql/schema.graphql
module.exports = ` type Query { books(minRating: Float=0): [Book] loans: [Loan] users: [User] book(id: Int): Book } type Book { id: Int title: String by: String rating: Float } type User { id: Int name: String email: String } type Loan { id: Int user: User book: Book } `;
graphql/resolver.js
var users = require('../data/users'); var books = require('../data/books'); var loans = require('../data/loans'); module.exports = { Query: { books(_obj, args, _context, _queryInfo) { const { minRating } = args; return books.filter(b => b.rating >= minRating); }, book(_obj, args, _context) { const { id } = args; return books.find(b => Number(b.id) === Number(id)); }, users(_obj, _args, _context, _queryInfo) { return users; }, loans(_obj, _args, _context, queryInfo) { // console.log(JSON.stringify(queryInfo.fieldNodes[0].selectionSet, null, 2)); return loans; } }, Loan: { user(obj, _args, _context, _queryInfo) { console.log(obj); return users.find(u => Number(u.id) === Number(obj.userId)); }, book(obj, _args, _context, _queryInfo) { console.log(obj); return books.find(b => Number(b.id) === Number(obj.bookId)); }, }, };