New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[relay-compiler] Compiler doesn't work for connections when types are non-nullable #1835

Open
nikolasburk opened this Issue May 30, 2017 · 3 comments

Comments

Projects
None yet
2 participants
@nikolasburk
Contributor

nikolasburk commented May 30, 2017

I'm having an issue with the relay-compiler that fails when fields are required.

Here's a simplified version of the schema that I used when I was hitting the issue.

allPosts(after: String, before: String, first: Int, last: Int): PostConnection!

type PostConnection {
  pageInfo: PageInfo!
  edges: [PostEdge]
}

type PostEdge {
  node: Post!
  cursor: String!
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}

type Post {
  id: ID!
  title: String!
}

Using required fields on the connections caused the compiler to fail with the following error:

Invariant Violation: RelaySchemaUtils: Expected type `PostConnection!` to be an object or interface type.

image

Using the following schema without required fields works:

allPosts(after: String, before: String, first: Int, last: Int): PostConnection

type PostConnection {
  pageInfo: PageInfo
  edges: [PostEdge]
}

type PostEdge {
  node: Post
  cursor: String
}

type PageInfo {
  hasNextPage: Boolean
  hasPreviousPage: Boolean
  startCursor: String
  endCursor: String
}

type Post {
  id: ID!
  title: String!
}

Feel free to take a look at the full project (note that the README doesn't yet include instructions about setting up the relay-compiler).

@kassens

This comment has been minimized.

Member

kassens commented May 31, 2017

If you want to take a look, the cause is most likely in RelayConnectionTransform.validateConnectionType.

Adding a new connection to the test schema that's non-nullable to extend the test in RelayConnectionTransform-test.js would be great!

@kassens kassens added the bug label May 31, 2017

@nikolasburk

This comment has been minimized.

Contributor

nikolasburk commented May 31, 2017

Hey Jan, thanks for thee hint! This seems like a slightly bigger refactor since assertTypeWithFields is used in multiple places, I'm not really comfortable doing that right now. I'll be releasing a getting started tutorial about Relay Modern today where I adjust the schema and remove the constraint for certain fields to be required in order to work around the issue.

@nikolasburk

This comment has been minimized.

Contributor

nikolasburk commented Jun 8, 2017

@nikolasburk nikolasburk changed the title from [Modern] Compiler doesn't work for @connection directive when types are non-nullable to [Modern] Compiler doesn't work for connections when types are non-nullable Jul 1, 2017

@nikolasburk nikolasburk changed the title from [Modern] Compiler doesn't work for connections when types are non-nullable to [relay-compiler] Compiler doesn't work for connections when types are non-nullable Jul 1, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment