document.write("
| const express = require('express'); |
| const bodyParser = require('body-parser'); |
| const Mongoose = require('mongoose'); |
| |
| const PORT = 8080; |
| const app = express(); |
| const { apolloExpress, graphiqlExpress } = require('apollo-server'); |
| const { makeExecutableSchema } = require('graphql-tools'); |
| |
| Mongoose.Promise = global.Promise; |
| Mongoose.connect('mongodb://localhost/apollo', (err) => { |
| if (err) { |
| return err; |
| } |
| return true; |
| }); |
| |
| const seed = require('./seed'); |
| |
| seed(); |
| |
| const Schema = require('./schema'); |
| const Resolvers = require('./resolvers'); |
| const Connectors = require('./connectors'); |
| |
| const executableSchema = makeExecutableSchema({ |
| typeDefs: Schema, |
| resolvers: Resolvers, |
| }); |
| |
| app.use('/graphql', bodyParser.json(), apolloExpress({ |
| schema: executableSchema, |
| context: { |
| constructor: Connectors, |
| }, |
| })); |
| |
| app.use('/graphiql', graphiqlExpress({ |
| endpointURL: '/graphql', |
| })); |
| |
| app.listen(PORT, () => console.log( |
| `GraphQL Server is now running on http://localhost:${PORT}/graphql` |
| )); |
| const resolveFunctions = { |
| RootQuery: { |
| president(_, { name }, ctx) { |
| const president = new ctx.constructor.President(); |
| return president.findPresident(name); |
| }, |
| }, |
| }; |
| |
| module.exports = resolveFunctions; |
| const PresidentModel = require('./model'); |
| |
| class President { |
| constructor() { |
| this.findPresident = (name) => { |
| const person = PresidentModel.findOne({ name }, (error, data) => { |
| return data; |
| }); |
| return person; |
| }; |
| } |
| } |
| |
| module.exports = { President }; |
| view raw |
| const typeDefinitions = ` |
| type President { |
| name: String |
| party: String |
| term: String |
| } |
| type RootQuery { |
| president(name: String, party: String, term: String): President |
| } |
| schema { |
| query: RootQuery |
| } |
| `; |
| |
| module.exports = [typeDefinitions]; |
| const request = require('request-promise'); |
| const President = require('./model'); |
| |
| const seed = () => { |
| request('https://mysafeinfo.com/api/data?list=presidents&format=json') |
| .then(res => JSON.parse(res)) |
| .then((res) => { |
| const data = res.map((r) => { |
| const obj = {}; |
| obj.name = r.nm; |
| obj.party = r.pp; |
| obj.term = r.tm; |
| return obj; |
| }); |
| data.forEach((d) => { |
| const president = new President(d); |
| president.save((err, item) => { |
| console.log('saved:', item); |
| }); |
| }); |
| }) |
| .catch((err) => { |
| console.log('err:', err); |
| }); |
| }; |
| |
| module.exports = seed; |
| const Mongoose = require('mongoose'); |
| |
| const PresidentSchema = Mongoose.Schema({ |
| name: String, |
| party: String, |
| term: String, |
| }); |
| |
| const President = Mongoose.model('President', PresidentSchema); |
| |
| module.exports = President; |
");