Comments (12)
Relay does not currently have a way of solving connections on root, see: facebook/relay#112
Viewer exists as a workaround, which we definitely support by resolving for a relation to the viewer.
For anonymous viewers we don't currently support connections (yet).
from graphql-sequelize.
What I was hoping for was a solution to having connections on an anonymous viewer node, hoping to have some time later this week to fork and see what I can do!
from graphql-sequelize.
I see, we don't support that at the moment but we definitely should.
from graphql-sequelize.
There's increased support for connections in v0.11.3
, please give it a go.
from graphql-sequelize.
I upgraded to 0.11.4 and it doesn't seem to convert relay connectionArgs to proper Postgres queries.
Example:
types/userType:
/* @flow */
import {
GraphQLObjectType,
} from 'graphql';
import {
connectionArgs,
connectionDefinitions,
globalIdField,
} from 'graphql-relay';
import {
resolver,
attributeFields,
} from 'graphql-sequelize';
import { User } from '../../models';
import type {
ConnectionDefinition,
RefsObject,
} from '../index';
export default (refs: RefsObject): ConnectionDefinition => {
const type = new GraphQLObjectType({
name: 'User',
fields: () => ({
...attributeFields(User),
id: globalIdField('User'),
sessions: {
type: refs.sessionConnection,
args: connectionArgs,
resolve: resolver(User.sessions),
},
stories: {
type: refs.storyConnection,
args: connectionArgs,
resolve: resolver(User.stories),
},
storytellers: {
type: refs.storytellerConnection,
args: connectionArgs,
resolve: resolver(User.storytellers),
},
}),
interfaces: [refs.nodeInterface],
});
const defs = connectionDefinitions({
name: 'User',
nodeType: type,
});
return {
type,
connectionType: defs.connectionType,
edgeType: defs.edgeType,
};
};
queries/users:
import { connectionArgs } from 'graphql-relay';
import { resolver } from 'graphql-sequelize';
import { User } from '../../models';
import type {
RefsObject,
QueryType,
} from '../index';
export default (refs: RefsObject): QueryType => ({
type: refs.userConnection,
args: connectionArgs,
resolve: resolver(User),
});
GraphQL query:
query getStories {
viewer {
users(first: 9999) {
edges { node { id } },
}
},
}
This generates the SQL query, Executing (default): SELECT "id" FROM "Users" AS "User" LIMIT 1;
And I get this as a return:
{
"data": {
"viewer": {
"users": {
"edges": null
}
}
}
}
from graphql-sequelize.
connectionsArgs handling does not exist yet: #21
But it should definitely not be doing a LIMIT.
from graphql-sequelize.
@cdebotton happy to fix but you'll likely have to provide a PR with a failing test.
from graphql-sequelize.
I'll try to provide a PR with a failing test this weekend, thanks!
from graphql-sequelize.
I've written a more full-featured connection proposal here: https://github.com/mickhansen/graphql-sequelize/blob/master/docs/relay.md
I'd love to support in-database ordering, slicing and paging - aswell as both association and model connection support.
from graphql-sequelize.
Your proposal looks great, would be incredibly useful for a project I'm working on. I've hit a bit of a wall where I need to write a mutation that adds to a range of data (connection). I'm fine writing the server side mutation, but without connection support on the viewer node, I'm unable to really add that model to my dataset.
Do you still looking to have some tests written? Been struggling to find time but can hopefully take a crack at it later this week.
from graphql-sequelize.
@cdebotton most of the stuff from the docs/relay proposal is now implemented.
I still need a good way to solve anonymous root nodes though, but i think we can solve it by having target
possibly be a callback.
from graphql-sequelize.
Implemented in the latest version, follow https://github.com/mickhansen/graphql-sequelize/blob/master/docs/relay.md
Use a model as a target and add a before method to filter
from graphql-sequelize.
Related Issues (20)
- Combining multiple associations HOT 5
- Problem integrating connection types and dataloader for paginated (cursor) queries HOT 1
- When using `JSONType` I get `Error: One of the provided types for building the Schema is missing a name.` HOT 2
- Can we use `attributeFields` with graphql SDL? HOT 2
- How to express two way relationship HOT 2
- Change the default name of Date scalar HOT 3
- Relay Connections with Dataloader HOT 4
- Is this working with GraphQL 15? HOT 2
- sequelize model comment => graphql field description HOT 4
- CITEXT throws an issue in the latest version HOT 7
- Unable to convert geometry to graphql type HOT 1
- Are filtering operators supported? HOT 2
- OrderBy can conflicts with Attributes HOT 1
- Passing `where:` in-place, without query variable HOT 2
- Fix order type in defaultListArgs HOT 6
- Compatibility with GraphQL v17 HOT 1
- Peer dependency support for graphql 16 HOT 2
- OrderBy doesn't pass multiple to the query HOT 1
- Changing relay edges to be nonNull causes a node error HOT 3
- Use graphql-sequelize with dataloader-sequelize 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-sequelize.