From cff3b2d500290cba39191ee8de142cfd2ddaffa0 Mon Sep 17 00:00:00 2001 From: Davey Date: Sat, 10 Jun 2017 13:37:02 -0700 Subject: [PATCH 1/2] Adding Dataloader, PersonType, and some data to test it. --- package.json | 1 + src/data/loaders/index.js | 10 +++++ src/data/loaders/personLoader.js | 6 +++ src/data/queries/getAllPeople.js | 26 +++++++++++ src/data/queries/getPerson.js | 24 ++++++++++ src/data/schema.js | 2 + src/data/seed/people.js | 77 ++++++++++++++++++++++++++++++++ src/data/types/PersonType.js | 29 ++++++++++++ src/server.js | 4 ++ yarn.lock | 17 +++---- 10 files changed, 186 insertions(+), 10 deletions(-) create mode 100644 src/data/loaders/index.js create mode 100644 src/data/loaders/personLoader.js create mode 100644 src/data/queries/getAllPeople.js create mode 100644 src/data/queries/getPerson.js create mode 100644 src/data/seed/people.js create mode 100644 src/data/types/PersonType.js diff --git a/package.json b/package.json index c64336139..f5b4c55a0 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "classnames": "^2.2.5", "cookie-parser": "^1.4.3", "core-js": "^2.4.1", + "dataloader": "^1.3.0", "express": "^4.15.2", "express-graphql": "^0.6.4", "express-jwt": "^5.3.0", diff --git a/src/data/loaders/index.js b/src/data/loaders/index.js new file mode 100644 index 000000000..43110a6cc --- /dev/null +++ b/src/data/loaders/index.js @@ -0,0 +1,10 @@ +import personLoader from './personLoader'; + +// All your dataloaders +const allLoaders = { + ...personLoader +} + +export default function loaders () { + return allLoaders +} diff --git a/src/data/loaders/personLoader.js b/src/data/loaders/personLoader.js new file mode 100644 index 000000000..3ccabb201 --- /dev/null +++ b/src/data/loaders/personLoader.js @@ -0,0 +1,6 @@ +import DataLoader from 'dataloader'; +import getPerson from '../queries/getPerson'; + +export default { + personLoader: new DataLoader(people => Promise.all(people.map(_id => getPerson(_id)) )) +} diff --git a/src/data/queries/getAllPeople.js b/src/data/queries/getAllPeople.js new file mode 100644 index 000000000..81e2792ec --- /dev/null +++ b/src/data/queries/getAllPeople.js @@ -0,0 +1,26 @@ +/** + * React Starter Kit (https://www.reactstarterkit.com/) + * + * Copyright © 2014-present Kriasoft, LLC. All rights reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE.txt file in the root directory of this source tree. + */ + +import { GraphQLList as List } from 'graphql'; +import PersonType from '../types/PersonType'; +import allPeople from '../seed/people'; + +// export function getAllPeople() { +// return people; +// }; + +const getAllPeople = { + type: new List(PersonType), + resolve: async( req, args, { loaders }) => { + let people = allPeople.map((person => person._id)); + return await loaders.personLoader.loadMany( people ); + } +}; + +export default getAllPeople; diff --git a/src/data/queries/getPerson.js b/src/data/queries/getPerson.js new file mode 100644 index 000000000..8a652c77f --- /dev/null +++ b/src/data/queries/getPerson.js @@ -0,0 +1,24 @@ +/** + * React Starter Kit (https://www.reactstarterkit.com/) + * + * Copyright © 2014-present Kriasoft, LLC. All rights reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE.txt file in the root directory of this source tree. + */ + +import PersonType from '../types/PersonType'; +import allPeople from '../seed/people'; + +const people = allPeople; + +export default function getPerson(_id) { + let response = null; + try { + response = people.find(people => people._id === _id); + } catch (err) { + console.log('getPerson err', err); + } + console.log('RESPONSE: ', response); + return response; +}; diff --git a/src/data/schema.js b/src/data/schema.js index 6156b07cd..1dc2b36d2 100644 --- a/src/data/schema.js +++ b/src/data/schema.js @@ -14,6 +14,7 @@ import { import me from './queries/me'; import news from './queries/news'; +import people from './queries/getAllPeople'; const schema = new Schema({ query: new ObjectType({ @@ -21,6 +22,7 @@ const schema = new Schema({ fields: { me, news, + people, }, }), }); diff --git a/src/data/seed/people.js b/src/data/seed/people.js new file mode 100644 index 000000000..4d49110bb --- /dev/null +++ b/src/data/seed/people.js @@ -0,0 +1,77 @@ +export default [ + { + _id: 'person_1', + name: 'Davey Edwards', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_2', + name: 'Konstantin Tarkus', + friends: ['person_1', 'person_2', 'person_3', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_3', + name: 'Lee Byron', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_4', + name: 'Laney Kuenzel', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_5', + name: 'Max Stoiber', + friends: ['person_1', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_6', + name: 'Jing Chen', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', ], + }, + { + _id: 'person_7', + name: 'Tyler McGinnis', + friends: ['person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_8', + name: 'Ryan Florence', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_9', + name: 'Michael Jackson', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_10', + name: 'Dan Abramov', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_11', + name: 'Tom Occhino', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_12', + name: 'Pete Hunt', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_13', + name: 'Joe Savona', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_14', 'person_15', ], + }, + { + _id: 'person_14', + name: 'Lin Clark', + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15', ], + }, + { + _id: 'person_15', + name: 'Dan Schafer', + friends: ['person_1', 'person_2', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15', ], + }, +]; diff --git a/src/data/types/PersonType.js b/src/data/types/PersonType.js new file mode 100644 index 000000000..eee6a6d52 --- /dev/null +++ b/src/data/types/PersonType.js @@ -0,0 +1,29 @@ +/** + * React Starter Kit (https://www.reactstarterkit.com/) + * + * Copyright © 2014-present Kriasoft, LLC. All rights reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE.txt file in the root directory of this source tree. + */ + +import { + GraphQLObjectType as ObjectType, + GraphQLString as StringType, + GraphQLList as List, +} from 'graphql'; + +const PersonType = new ObjectType({ + name: 'Person', + fields: () => ({ + name: { type: StringType }, + friends: { + type: new List( PersonType ), + resolve: async( person, args, { loaders }) => { + return await loaders.personLoader.loadMany( person.friends ); + } + } + }) +}); + +export default PersonType; diff --git a/src/server.js b/src/server.js index 3fd982403..cc677e3f7 100644 --- a/src/server.js +++ b/src/server.js @@ -28,6 +28,7 @@ import models from './data/models'; import schema from './data/schema'; import assets from './assets.json'; // eslint-disable-line import/no-unresolved import config from './config'; +import loaders from './data/loaders'; const app = express(); @@ -90,6 +91,9 @@ app.use('/graphql', expressGraphQL(req => ({ graphiql: __DEV__, rootValue: { request: req }, pretty: __DEV__, + context: { + loaders: loaders() + }, }))); // diff --git a/yarn.lock b/yarn.lock index b9c156aa8..ce57a828b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1966,6 +1966,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +dataloader@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.3.0.tgz#6fec5be4b30a712e4afd30b86b4334566b97673b" + date-fns@^1.27.2: version "1.28.5" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf" @@ -2186,20 +2190,13 @@ domutils@1.1: dependencies: domelementtype "1" -domutils@1.5.1: +domutils@1.5.1, domutils@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" dependencies: dom-serializer "0" domelementtype "1" -domutils@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" - dependencies: - dom-serializer "0" - domelementtype "1" - dottie@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/dottie/-/dottie-1.1.1.tgz#45c2a3f48bd6528eeed267a69a848eaaca6faa6a" @@ -4267,7 +4264,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.12.0: +lodash@4.12.0, lodash@^4.2.0: version "4.12.0" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.12.0.tgz#2bd6dc46a040f59e686c972ed21d93dc59053258" @@ -4279,7 +4276,7 @@ lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" From 83238f6778857bfc575467158bf6d66cc85726c4 Mon Sep 17 00:00:00 2001 From: Davey Date: Sat, 10 Jun 2017 16:40:32 -0700 Subject: [PATCH 2/2] Making tests pass --- .eslintrc.js | 3 ++ src/data/loaders/index.js | 8 ++-- src/data/loaders/personLoader.js | 4 +- src/data/queries/getAllPeople.js | 13 +++--- src/data/queries/getPerson.js | 10 ++--- src/data/seed/people.js | 72 +++++++++++++------------------- src/data/types/PersonType.js | 10 ++--- src/server.js | 2 +- 8 files changed, 52 insertions(+), 70 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6b3c28ab2..abf79a468 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -61,5 +61,8 @@ module.exports = { // https://github.com/kriasoft/react-starter-kit/pull/961 // You can reopen this if you still want this rule 'react/prefer-stateless-function': 'off', + + // Prevent linebreak warnings on Windows + "linebreak-style": 0, }, }; diff --git a/src/data/loaders/index.js b/src/data/loaders/index.js index 43110a6cc..907d222bb 100644 --- a/src/data/loaders/index.js +++ b/src/data/loaders/index.js @@ -2,9 +2,9 @@ import personLoader from './personLoader'; // All your dataloaders const allLoaders = { - ...personLoader -} + ...personLoader, +}; -export default function loaders () { - return allLoaders +export default function loaders() { + return allLoaders; } diff --git a/src/data/loaders/personLoader.js b/src/data/loaders/personLoader.js index 3ccabb201..c875b1d32 100644 --- a/src/data/loaders/personLoader.js +++ b/src/data/loaders/personLoader.js @@ -2,5 +2,5 @@ import DataLoader from 'dataloader'; import getPerson from '../queries/getPerson'; export default { - personLoader: new DataLoader(people => Promise.all(people.map(_id => getPerson(_id)) )) -} + personLoader: new DataLoader(people => Promise.all(people.map(_id => getPerson(_id)))), +}; diff --git a/src/data/queries/getAllPeople.js b/src/data/queries/getAllPeople.js index 81e2792ec..4392a8d52 100644 --- a/src/data/queries/getAllPeople.js +++ b/src/data/queries/getAllPeople.js @@ -11,16 +11,13 @@ import { GraphQLList as List } from 'graphql'; import PersonType from '../types/PersonType'; import allPeople from '../seed/people'; -// export function getAllPeople() { -// return people; -// }; - +/* eslint-disable no-underscore-dangle */ const getAllPeople = { type: new List(PersonType), - resolve: async( req, args, { loaders }) => { - let people = allPeople.map((person => person._id)); - return await loaders.personLoader.loadMany( people ); - } + resolve: async (req, args, { loaders }) => { + const people = allPeople.map((person => person._id)); + return loaders.personLoader.loadMany(people); + }, }; export default getAllPeople; diff --git a/src/data/queries/getPerson.js b/src/data/queries/getPerson.js index 8a652c77f..0209d0def 100644 --- a/src/data/queries/getPerson.js +++ b/src/data/queries/getPerson.js @@ -7,18 +7,16 @@ * LICENSE.txt file in the root directory of this source tree. */ -import PersonType from '../types/PersonType'; import allPeople from '../seed/people'; -const people = allPeople; - +/* eslint-disable no-underscore-dangle */ export default function getPerson(_id) { let response = null; try { - response = people.find(people => people._id === _id); + response = allPeople.find(people => people._id === _id); } catch (err) { + /* eslint-disable no-console */ console.log('getPerson err', err); } - console.log('RESPONSE: ', response); return response; -}; +} diff --git a/src/data/seed/people.js b/src/data/seed/people.js index 4d49110bb..ddeb6e3cc 100644 --- a/src/data/seed/people.js +++ b/src/data/seed/people.js @@ -2,76 +2,62 @@ export default [ { _id: 'person_1', name: 'Davey Edwards', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_2', name: 'Konstantin Tarkus', - friends: ['person_1', 'person_2', 'person_3', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_3', name: 'Lee Byron', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_4', name: 'Laney Kuenzel', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_5', name: 'Max Stoiber', - friends: ['person_1', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_6', name: 'Jing Chen', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10'], + }, { _id: 'person_7', name: 'Tyler McGinnis', - friends: ['person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_8', name: 'Ryan Florence', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_9', name: 'Michael Jackson', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_10', name: 'Dan Abramov', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_11', name: 'Tom Occhino', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_9', 'person_9', 'person_10', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_12', name: 'Pete Hunt', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_11', 'person_12', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_13', name: 'Joe Savona', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_14', 'person_15'], + }, { _id: 'person_14', name: 'Lin Clark', - friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15', ], - }, - { + friends: ['person_1', 'person_2', 'person_3', 'person_4', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15'], + }, { _id: 'person_15', name: 'Dan Schafer', - friends: ['person_1', 'person_2', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15', ], + friends: ['person_1', 'person_2', 'person_5', 'person_6', 'person_7', 'person_8', 'person_9', 'person_9', 'person_10', 'person_13', 'person_14', 'person_15'], }, ]; diff --git a/src/data/types/PersonType.js b/src/data/types/PersonType.js index eee6a6d52..9e7f85c1e 100644 --- a/src/data/types/PersonType.js +++ b/src/data/types/PersonType.js @@ -18,12 +18,10 @@ const PersonType = new ObjectType({ fields: () => ({ name: { type: StringType }, friends: { - type: new List( PersonType ), - resolve: async( person, args, { loaders }) => { - return await loaders.personLoader.loadMany( person.friends ); - } - } - }) + type: new List(PersonType), + resolve: (person, args, { loaders }) => loaders.personLoader.loadMany(person.friends), + }, + }), }); export default PersonType; diff --git a/src/server.js b/src/server.js index cc677e3f7..8c7d75d04 100644 --- a/src/server.js +++ b/src/server.js @@ -92,7 +92,7 @@ app.use('/graphql', expressGraphQL(req => ({ rootValue: { request: req }, pretty: __DEV__, context: { - loaders: loaders() + loaders: loaders(), }, })));