I'm trying to use a custom error with apollo-server and it seems that my custom error has a property (code
) that isn't available from within formatError
.
import ExtendableError from 'es6-error'
export default class MyError extends ExtendableError {
constructor(args) {
let code = Object.keys(args)[0]
let message = Object.values(args)[0]
super(message)
this.code = code
}
}
I have a simple error handler works something like this:
let INVALIDREQUEST = 'invalid request'
let e = new MyError({INVALIDREQUEST})
console.log(e.code) // => "INVALIDREQUEST"
I'm having trouble because when I log error.code
from within formatError
it's not available.
formatError: function (error) {
console.log(error.code) // => undefined
return error
}
How can I propagate custom properties (like code
) of error
from within formatError
?
With Apollo, you can easily multiplex the errors array in the graphql response for both graphql errors AND custom errors that are machine readable using this package:
https://github.com/thebigredgeek/apollo-errors
Usually it's enough. You can define error code (2 parameter), error message and any custom object in extensions (3 parameter)
throw new ApolloError('User already exist',
'DUPLICATE',
{ 'session': session })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With