When used as specified in the middleware documentation, the function is executed for every type, for every field of that type, and for all subfields in the request.
wmwart opened this issue · comments
wmwart commented
I installed the package as directed in readme. And Launched the first example https://github.com/maticzav/graphql-middleware#how-does-it-work.
I expected to see something similar during execution, which is indicated in the diagram. 2 messages before the resolver, 2 after.
However, my entire console was filled with messages for the request itself, for return type fields, for all subfields of that type.
Is this the right job?
server:
const { ApolloServer, makeExecutableSchema } = require('apollo-server');
const { applyMiddleware } = require('graphql-middleware');
const { typeDefs, resolvers } = require('./modules');
const schemaDirectives = require('./directives');
const executableSchema = makeExecutableSchema({
typeDefs,
resolvers,
schemaDirectives,
})
const logInput = async (resolve, root, args, context, info) => {
console.log(`1. logInput: ${JSON.stringify(args)}`)
const result = await resolve(root, args, context, info)
console.log(`5. logInput`)
return result
}
const logResult = async (resolve, root, args, context, info) => {
console.log(`2. logResult`)
const result = await resolve(root, args, context, info)
console.log(`4. logResult: ${JSON.stringify(result)}`)
return result
}
const schema = applyMiddleware(executableSchema, logInput, logResult);
const server = new ApolloServer({
schema,
context: req => {
return {
...req,
}
}
});
server.listen({
port: APP_PORT,
}).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
query:
query getOneDashboard($where: DashboardWhereUniqueInput!) {
data: Dashboard(where: $where) {
item {
...DashboardFragment
__typename
}
__typename
}
}
fragment DashboardFragment on Dashboard {
id
name
description
createdAt
createdBy {
...EmbeddedUserFragment
__typename
}
updatedAt
deleted
widgets {
id
widget {
...EmbeddedWidgetFragment
__typename
}
meta
__typename
}
__typename
}
fragment EmbeddedUserFragment on User {
id
name
description
__typename
}
fragment EmbeddedWidgetFragment on Widget {
id
name
description
url
meta
__typename
}
server console:
1. logInput: {"where":{"id":"ckko0k5su0000ckkjwjfgh63u"}}
src/index.js
2. logResult
src/index.js
4. logResult: {"item":{"id":"ckko0k5su0000ckkjwjfgh63u","name":"bnvnvbvbn","description":null,"createdAt":"2021-02-02T13:04:17.502Z","createdBy":{"id":"ckk28m3si00004kkjppinmbde","name":"Super Admin","description":"d456fg"},"updatedAt":"2021-02-05T06:01:49.029Z","deleted":true,"widgets":[]}}
src/index.js
5. logInput
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
4. logResult: {"id":"ckko0k5su0000ckkjwjfgh63u","name":"bnvnvbvbn","description":null,"createdAt":"2021-02-02T13:04:17.502Z","createdBy":{"id":"ckk28m3si00004kkjppinmbde","name":"Super Admin","description":"d456fg"},"updatedAt":"2021-02-05T06:01:49.029Z","deleted":true,"widgets":[]}
src/index.js
5. logInput
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
4. logResult: "ckko0k5su0000ckkjwjfgh63u"
src/index.js
4. logResult: "bnvnvbvbn"
src/index.js
4. logResult: null
src/index.js
4. logResult: "2021-02-02T13:04:17.502Z"
src/index.js
4. logResult: {"id":"ckk28m3si00004kkjppinmbde","name":"Super Admin","description":"d456fg"}
src/index.js
4. logResult: "2021-02-05T06:01:49.029Z"
src/index.js
4. logResult: true
src/index.js
4. logResult: []
src/index.js
5. logInput
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
1. logInput: {}
src/index.js
2. logResult
src/index.js
4. logResult: "ckk28m3si00004kkjppinmbde"
src/index.js
4. logResult: "Super Admin"
src/index.js
4. logResult: "d456fg"
src/index.js
5. logInput
src/index.js
Heeju Jeong commented
see #54