@@ -26,7 +26,7 @@ Source code: https://github.com/nodkz/graphql-compose-mongoose-example
2626``` js
2727import mongoose from ' mongoose' ;
2828import composeWithMongoose from ' graphql-compose-mongoose' ;
29- import { GraphQLSchema , GraphQLObjectType } from ' graphql' ;
29+ import { GQC } from ' graphql-compose ' ;
3030
3131// STEP 1: DEFINE MONGOOSE SCHEMA AND MODEL
3232const LanguagesSchema = new mongoose.Schema ({
@@ -66,43 +66,30 @@ const UserModel = mongoose.model('UserModel', UserSchema);
6666
6767// STEP 2: CONVERT MONGOOSE MODEL TO GraphQL PIECES
6868const customizationOptions = {}; // left it empty for simplicity, described below
69- const typeComposer = composeWithMongoose (UserModel, customizationOptions);
70- // get list of 12 Resolvers (findById, updateMany and others)
71- const resolvers = typeComposer .getResolvers ();
72-
73- // typeComposer from (graphql-compose) provide bunch if useful methods
74- // for modifying GraphQL Types (eg. add/remove fields, relate with other types,
75- // restrict access due context).
76-
69+ const UserTC = composeWithMongoose (UserModel, customizationOptions);
7770
7871// STEP 3: CREATE CRAZY GraphQL SCHEMA WITH ALL CRUD USER OPERATIONS
7972// via graphql-compose it will be much much easier, with less typing
80- const graphqlSchema = new GraphQLSchema ({
81- query: new GraphQLObjectType ({
82- name: ' RootQuery' ,
83- fields: {
84- userById: resolvers .get (' findById' ).getFieldConfig (),
85- userByIds: resolvers .get (' findByIds' ).getFieldConfig (),
86- userOne: resolvers .get (' findOne' ).getFieldConfig (),
87- userMany: resolvers .get (' findMany' ).getFieldConfig (),
88- userTotal: resolvers .get (' count' ).getFieldConfig (),
89- userConnection: resolvers .get (' connection' ).getFieldConfig (),
90- },
91- }),
92- mutation: new GraphQLObjectType ({
93- name: ' RootMutation' ,
94- fields: {
95- userCreate: resolvers .get (' createOne' ).getFieldConfig (),
96- userUpdateById: resolvers .get (' updateById' ).getFieldConfig (),
97- userUpdateOne: resolvers .get (' updateOne' ).getFieldConfig (),
98- userUpdateMany: resolvers .get (' updateMany' ).getFieldConfig (),
99- userRemoveById: resolvers .get (' removeById' ).getFieldConfig (),
100- userRemoveOne: resolvers .get (' removeOne' ).getFieldConfig (),
101- userRemoveMany: resolvers .get (' removeMany' ).getFieldConfig (),
102- },
103- }),
73+ GQC .rootQuery ().addFields ({
74+ userById: UserTC .getResolver (' findById' ),
75+ userByIds: UserTC .getResolver (' findByIds' ),
76+ userOne: UserTC .getResolver (' findOne' ),
77+ userMany: UserTC .getResolver (' findMany' ),
78+ userTotal: UserTC .getResolver (' count' ),
79+ userConnection: UserTC .getResolver (' connection' ),
80+ });
81+
82+ GQC .rootMutation ().addFields ({
83+ userCreate: UserTC .getResolver (' createOne' ),
84+ userUpdateById: UserTC .getResolver (' updateById' ),
85+ userUpdateOne: UserTC .getResolver (' updateOne' ),
86+ userUpdateMany: UserTC .getResolver (' updateMany' ),
87+ userRemoveById: UserTC .getResolver (' removeById' ),
88+ userRemoveOne: UserTC .getResolver (' removeOne' ),
89+ userRemoveMany: UserTC .getResolver (' removeMany' ),
10490});
10591
92+ const graphqlSchema = GQC .buildSchema ();
10693export default graphqlSchema ;
10794```
10895That's all!
@@ -112,7 +99,7 @@ I don't think so, because by default internally was created about 55 graphql typ
11299
113100Customization options
114101=====================
115- When we convert model ` const typeComposer = composeWithMongoose(UserModel, customizationOptions); ` you may tune every piece of future derived types and resolvers.
102+ When we convert model ` const UserTC = composeWithMongoose(UserModel, customizationOptions); ` you may tune every piece of future derived types and resolvers.
116103
117104### Here is flow typed definition of this options:
118105
0 commit comments