Skip to content

sefaun/graphql-resolvers-middleware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

GraphQL Resolvers Middleware

In GraphQL Resolvers Functions Arguments are parent, args, context, info. When use this package, it is provide next, returns functions.

next()

This function provide to pass other to function in order. Also next functions provide to send other function in order some values like next(1, 2). You can reach parameters from other order functions like const UserList = async (one , two, parent, args, context, info, next, returns) => {}.

returns()

This function returns your graphql api response to front-end.

Example

File userListType.ts

export const userListType = gql`
type Query {
  userList: userListPayload
}

type userListPayload {
  result: String
}
`

File resolvers.ts

import { graphqlResolversMiddleware } from "graphql-resolvers-middleware"

import { JwtCheck } from "./JwtCheck"
import { UserList } from "./UserList"


export const resolvers = {
  Query: {
    userList: graphqlResolversMiddleware(JwtCheck, /*add some functions*/ UserList),
    //...
    others: graphqlResolversMiddleware(JwtCheck, Validation, /*add some functions*/ OtherFunction),
  }
}

File JwtCheck.ts

export const JwtCheck = async (parent, args, context, info, next, returns) => {
  try {
    const token = context.req.headers.authorization.split("Bearer ")[1]

    const _decoded = jwt.verify(token, process.env.JWT_SECRET_KEY)

    return next()
  } catch (error) {
    return returns({ result: "Invalid Token" })
  }
}

File UserList.ts

export const UserList = async (parent, args, context, info, next, returns) => {
  try {

    //Do somethings.....

    return returns({ result: "result: " + Math.floor(Math.random() * 100)})

  } catch (error) {
    return returns({ result: "error" })
  }
}