graphql-python / graphql-python/graphene-sqlalchemy
resolver outside of the class isn't working in SQLAlchemyConnectionField
- Langage dominant
- Python
- Étoiles
- 985
- Forks
- 223
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.