graphql-python / graphql-python/graphene-sqlalchemy

ORMField batching results in null result

Aberta
#401 1 comentário 5 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
985
Forks
223
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

I'm trying to get batching set up on a 1:N relationship. Suppose a `Foo` has many `Bar`s

```python
class FooObject(SQLAlchemyObjectType):
class Meta:
model = Foo
interfaces = (graphene.relay.Node,)

bars = ORMField(batching=True)
```
(I've also tried doing `batching=True` in the `Meta`)

```python
class Query(graphene.ObjectType):
test_query_batching = graphene.Field(
lambda: graphene.List(FooObject),
)

def resolve_test_foo_query_batching(self, info):
return Foo.query.limit(5).all()
```

Querying this resolver as such

```graphql
query TestQueryBatching {
testQueryBatching {
id
bars {
edges {
node {
id
}
}
}
}
}
```

results in `Cannot return null for non-nullable field BarObjectConnection.edges`. This query succeeds if `batching` is disabled. I'm unsure as to why we'd be getting null for `BarObjectConnection.edges`, though. Any ideas as to what might be leading to this?

Versions:
- SQLAlchemy==1.4.51
- Flask-SQLAlchemy==2.5.1
- graphene-sqlalchemy==3.0.0rc1

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Reproduza o comportamento relatado em FooObject ORMField, no resolver test_query_batching e na query BarObjectConnection.edges usando as versões listadas de SQLAlchemy, Flask-SQLAlchemy e graphene-sqlalchemy. Rastreie o caminho do batching e compare-o com o batching desabilitado; considera-se concluído quando a query retorna edges preenchidos sem a violação de non-null, preservando o comportamento existente sem batching.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
graphql, python, sqlalchemy
Domínio
backend-api-design, database
Tipo de issue
Bug
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Precisa de esclarecimento
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.