graphql-python / graphql-python/graphene-sqlalchemy

resolver outside of the class isn't working in SQLAlchemyConnectionField

Offen
#59 3 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
985
Forks
223
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I've been trying to get this to work for some time and haven't been able to figure it out. I am trying to use a resolver outside of a class using an SQLAlchemyConnectionField. The resolver is called when it is in the class however not when it is outside of the class. I have modified the flask example code to demonstrate this:

```
class Employee(SQLAlchemyObjectType):

class Meta:
model = EmployeeModel
interfaces = (relay.Node, )

favourite_roles = SQLAlchemyConnectionField(Role)

def resolve_favourite_roles(self, args, context, info):
# everyone wants to be a manager
return Role.get_query(Role).filter_by(name='manager')
```
The above code works as expected. for the query:
```
{allEmployees {
edges {
node {
name
favouriteRoles {
edges{
node {
name
}
}
}
}
}
}}
```
It returns:
```
{
"data": {
"allEmployees": {
"edges": [
{
"node": {
"name": "Peter",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
}
]
}
}
},
{
"node": {
"name": "Roy",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
}
]
}
}
},
{
"node": {
"name": "Tracy",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
}
]
}
}
}
]
}
}
}
```
However when I have this code:
```
def resolve_favourite_roles(root, args, context, info):
# everyone wants to be a manager
return Role.get_query(Role).filter_by(name='manager')

class Employee(SQLAlchemyObjectType):

class Meta:
model = EmployeeModel
interfaces = (relay.Node, )

favourite_roles = SQLAlchemyConnectionField(Role, resolver=resolve_favourite_roles)
```
This is the result.
```
{
"data": {
"allEmployees": {
"edges": [
{
"node": {
"name": "Peter",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
},
{
"node": {
"name": "engineer"
}
}
]
}
}
},
{
"node": {
"name": "Roy",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
},
{
"node": {
"name": "engineer"
}
}
]
}
}
},
{
"node": {
"name": "Tracy",
"favouriteRoles": {
"edges": [
{
"node": {
"name": "manager"
}
},
{
"node": {
"name": "engineer"
}
}
]
}
}
}
]
}
}
}
```
The resolver function is not being called when it is outside of the class.

Any help is appreciated.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.