graphql-python / graphql-python/graphene-sqlalchemy

resolver outside of the class isn't working in SQLAlchemyConnectionField

未关闭
#59 3 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
985
派生
223
PR 合并指标
30 天内没有已合并 PR

描述

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.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。