Errata

Learning GraphQL

Errata for Learning GraphQL

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date Submitted
Printed Page 102
2

After updating photo-share-api-ch05/index.js to use apollo-server-express, the following error is presented when accessing the playground (the / homepage works fine):

[localhost:4000] Server cannot be reached
{
"error": "Unexpected token '<', \"<!DOCTYPE \"... is not valid JSON"
}


Dave John  Oct 27, 2023 
Printed Page 50
mutation createSong(

The mutation query looks to expect an Int for $numberOne, eg:

mutation createSong($title:String! $numberOne:Int $byString!) {
...
}

yet in the variables, we pass in:

{
"numberOne": true
}

Where the variable is a boolean? Is this errata or some unexplained type coercion, in which case I think it should require some discussion if that is the case?

Leigh Mathieson  May 04, 2020 
Printed, PDF, ePub Page 48
First paragraph

When you goto: https://r9041j7lrn.lp.gql.zone/graphql

The book suggests to look at the documentation (or schema) but the site just hangs permanently when you select these!

also if you modify the query as suggested on P48, 2/3 of the way down to include:

query schedule {
agenda {
name
start
end
... on Workout {
reps
}
}
}

It just hangs indefinitely... So the swapi api is currently down and this does not work.. it's been frustrating trying to get these examples to work and many of them aren't currently

Leigh Mathieson  May 04, 2020 
Printed, PDF, ePub Page 10
Wherever referencing: swapi.co the site is currently down

Swapi.co site appears to be completely down (maybe temp Covid issue? or a log-term issue, unsure) so I assume swapi-graphql wrapper will not be returning anything also - none of the Star Wars examples are working (I am UK based - is it the same uk-wide?)... :-( makes it tricky to work through any examples

Leigh Mathieson  May 04, 2020 
Printed Page 16
Figure 2-3. Family Tree

The schema of the graph cannot be inferred. Why is there an edge between 'Your Dad' and 'Your Uncle' when there is no edge between 'You' and 'Your Sister'?

Anonymous  Oct 19, 2019 
PDF Page 116
line before the header "Sorting"

"pages = pageSize/total" should be "pages = total/pageSize"

Yuriy Zaitsev  Jul 21, 2019 
PDF Page 40
Top paragraph

The description of the query says we are asking for the status of allTrails, when actually, the query is for the difficulty.


Anonymous  May 14, 2019 
Other Digital Version 74
NA

Extract:

« The PostPhotoInput type is like an object type, but it was created only for input arguments. It requires a name and the description , but category fields are still optional. »

According to the code before, description is optional too

Anonymous  Mar 21, 2019 
Other Digital Version 71
NA

« This query selects only 10 years » instead of « This query selects only 10 users »

Anonymous  Mar 21, 2019 
Other Digital Version 67
Code sample

scalar DataTime instead of scalar DateTime

Anonymous  Mar 21, 2019 
ePub Page 86-98
GraphQL Bin links

Server cannot be reached

Karl Marx Lopez  Mar 13, 2019 
Printed Page 156
"Adding the WebSocketLink" section

I think

> To enable WebSockets on the server...

Should be

> To enable WebSockets on the client...

Mike Lyons  Jan 05, 2019 
Printed Page 156
In "Adding the WebSocketLink"

s/subscription-transport-ws/subscriptions-transport-ws/

In the line:

> npm install apollo-link-ws apollo-utilities subscription-transport-ws

I think it should be:

> npm install apollo-link-ws apollo-utilities subscription-transport-ws

Mike Lyons  Jan 05, 2019 
Printed Page 100
Throughout page

Page 100 implies input data makes it to the resolver in one of two ways:

literal => parseLiteral() => parseValue() => resolver
json => parseValue() => resolver

From working through the example and looking through the docs (https://graphql.org/graphql-js/type/) I think it works like this:

literal => parseLiteral() => resolver
json => parseValue() => resolver

If I'm right, I would modify page 100 in two places substituting

> parseLiteral = ast => ast.value

for

> parseLiteral = ast => new Date(ast.value)

It might also be worth rephrasing page 100 to make it clear that literals do not call parseValue().

Mike Lyons  Jan 04, 2019 
Printed Page 172
2nd paragraph

Current:
"[...] query depth limit to 10 [...]"

Should be:
"[...] query depth limit to 5 [...]" (in the code example above you set validationRules: [depthLimit(5)] )

Anonymous  Sep 20, 2018 
Printed Page 76
2nd paragraph

Currently: "[...] we can also filter photos by category, search string, or taggedUsers."

On the previous page you introduced the input fields for PhotoFilter i.e., category, createdBetween, taggedUsers, searchText. To be consistent you should stick to searchText in the above mentioned sentence instead of search string.

Anonymous  Sep 18, 2018 
Mobi Page 775
Chapter 3 -> The GraphQL Query -> just before Edges and Connections

I've only got the Kindle version of the book so I can't know the exact page number. On my Kindle App, the location is at number 775.

The following query is throwing an error on GraphQL Playground:

query closedLifts {
allLifts(status: "CLOSED" sortBy: "name") {
name
status
}
}

Florian Bougel  Sep 06, 2018