Comments (7)
I see. Thanks for pointing that out!! I looked for something like this when implementing the automatic union type resolution and I couldn't find it 😅 It was a question on my mind, whether or not a union type could be resolved for a single record.
This means that Mirage GraphQL makes the wrong assumption here and can't automatically resolve union types this way, for now. We'll have to put in a bug fix.
To get around this, you can supply your own resolver for the field. The resulting record will just need the __typename
field populated and you should be able to keep going. I'm happy to help you with the resolver, if you'd like. You can join Mirage's Discord server: https://discord.gg/8PxR2E for more direct conversations. There's even a #graphql channel.
from graphql.
Hey, thanks for the feedback!
At first glance, I think the issue is that the Basket
type expects a singular fruit. I assume it would be more like a list of fruit, fruit: [Fruit]
, which should work with a union type.
from graphql.
List of fruits would actually make more sense in a basket, maybe it was a bad choice of an example type on my part. 😅
The problem still stands - I'm looking to have a single value of union type, just like in the example.
Let's assume it's a very small basket :)
from graphql.
No worries on the example. The same still applies; though, union types are intended for lists, as I understand it.
from graphql.
Ah, I've missed that this was your point.
However, take a look at https://spec.graphql.org/June2018/#sec-Unions. The union definition doesn't have anything to do with a list and the example given in the spec doesn't use one.
from graphql.
Here's an example resolver:
import { mirageGraphQLFieldResolver } from "@miragejs/graphql"
const graphQLHandler = createGraphQLHandler(schema, this.schema, {
resolvers: {
Basket: {
fruit() {
const [fruit] = mirageGraphQLFieldResolver(...arguments);
return fruit;
}
}
}
})
from graphql.
Just to capture the necessary notes for fixing the bug:
- Mirage GraphQL almost has it right... it gets the right record but always returns a list.
- We need to check the return type of the field and make sure we don't just assume union type fields should resolve to a list.
from graphql.
Related Issues (20)
- Expose API or hooks for custom resolvers HOT 2
- createGraphQLHandler can't deal with directives HOT 4
- Relationship HOT 3
- Handle Custom scalar type like Date HOT 1
- Missing good examples how to use some features on README HOT 1
- How deal with complex queries? HOT 3
- TypeError on `returnType` when returning Union from mutations HOT 3
- Expected Iterable, but did not find one for field HOT 5
- connect ECONNREFUSED 127.0.0.1:4001 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16) HOT 3
- Delete mutation example in README is incorrect
- [QUESTION] Does this plugin works for testing? HOT 13
- Mirage: You called server.create(<model_name>) but no model or factory was found HOT 2
- ApolloError: Cannot read property 'type' of undefined HOT 1
- How to respond with a server error? HOT 3
- How can I update an entry in resolver and trigger an update in watchQuery? HOT 1
- When updating data, an error occurs if there is a relationship HOT 1
- Example of own resolvers for query / filter involving Union types HOT 1
- Help Wanted: TypeScript and Priorities HOT 9
- model.hasInverseFor is not a function
- How to reproduce NOT_FOUND error with context.mirageSchema.findBy() HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql.