graphql-python / graphql-python/graphene-sqlalchemy
ORMField batching results in null result
- 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
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