v8-archive icon indicating copy to clipboard operation
v8-archive copied to clipboard

Directus 8 GraphQL API incompatible with Gatsby's gatsby-source-graphql plugin

Open cdanny358 opened this issue 5 years ago • 2 comments

A bare-bones Directus 8 project's GraphQL output looks fine in a viewer like iGraphQL, but throws all sorts of errors during compilation when importing the data into Gatsby via the gatsby-source-graphql plugin, as shown here:

Error: Interface field Directus_Node.id expected but Directus_DirectusActivity does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFileThumbnailItem does not provide it.
Interface field Directus_Node.id expected but Directus_Metadata does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollection does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollectionItem does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFieldItem does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollectionPreset does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusField does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFile does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFolder does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusPermission does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusRelation does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusRevision does not provide it. Interface field Directus_Node.id expected but Directus_DirectusRole does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusSetting does not provide it.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_eq" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_neq" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_contains" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_ncontains" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_rlike" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nrlike" does not. Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_empty" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nempty" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_null" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nnull" does not.
Interface field Directus_Node.id expected but Directus_DirectusUser does not provide it.

For reference, in the gatsby plugin config I'm using a typeName of Directus and a fieldName of directus.

Honestly, I don't know if this is a Directus issue or a Gatsby issue, although the GraphQL spec says that names shouldn't start with a number, hence all the 2fa errors above. I suspect that Gatsby requires a particular edge - node hierarchy that the GraphQL spec doesn't require and Directus doesn't provide, but that's just a guess.

cdanny358 avatar Feb 12 '20 00:02 cdanny358

I can investigate this one.

Owlree avatar Feb 14 '20 08:02 Owlree

I ran into this as well. It seems like a bunch of types (e.g. DirectusUser) implement the Node type, but don't have the required id: ID field.

bywo avatar Apr 09 '21 20:04 bywo