This is a basic backend boilerplate for setting up a graphql server with mongodb and express.
npm install
npm start
go to http://localhost:8080/graphql to work with the graphqil to make queries from schema.js root query is:
export var Schema = new GraphQLSchema({
query: QueryType,
});
QueryType has these fields that can be queried on: in types/query.js
graphiql queries look like this:
Example schema in [model].js
import mongoose from 'mongoose';
let newModelSchema = new mongoose.Schema({
_id: {
type: String,
required: true,
default: mongoose.Types.ObjectId,
content: {
type: String,
},
createdAt: {
type: Date,
default: Date.now,
},
//add in field for graphql type
type: {
type: String,
}
})
export default mongoose.model('User', UserSchema);
Node Interface used for re-fetching of objects
let nodeInterface = new GraphQLInterfaceType({
name: 'Node',
description: 'An object with an ID',
fields: () => ({
id: {
type: new GraphQLNonNull(GraphQLID),
description: 'The global unique ID of an object'
},
type: {
type: new GraphQLNonNull(GraphQLString),
description: "The type of the object"
}
}),
resolveType: (obj) => {
if (obj.type === 'user') {
return UserType;
} else if (obj.type === 'post') {
return PostType;
} else if (obj.type === 'comment') {
return CommentType;
}
}
});
module.exports = {
nodeInterface: () => [ nodeInterface ], //wrap nodeInterface in function to avoid circular dependency issues
nodeField: nodeField,
}