Azure / Azure/data-api-builder

[Bug]: array "contains" not supported when using filter

Abierto
#2,058 1 comentario 0 reacciones 0 asignados Ver en GitHub
bug graphql triage
Lenguaje dominante
C#
Estrellas
1.5k
Forks
370
Merge medio
3 d 22 h
PR fusionados (30 d)
9

Descripción

### What happened?

**Simplified Schema**
````
type NestedData {
author: String
nestedArray: [String]
}

type SomeEntity @model {
contentId: String
outsideArray: [String]
nestedData: [NestedData]
}
````
**Config**
````json
"entities": {
"SomeEntity": {
"source": "test",
"rest": false,
"graphql": true,
"permissions": [
{
"role": "anonymous",
"actions": [
"*"
]
}
]
},
"NestedData": {
"source": "test",
"rest": false,
"graphql": true,
"permissions": [
{
"role": "anonymous",
"actions": [
"*"
]
}
]
}
}
````
**Query**
````
someEntities(
first: 5
filter: {
and: [
{ nestedData: { author: { eq: "author1" } } }
{ nestedData: { nestedArray: { contains: "item1" } } }
]
}
) {
items {
contentId,
outsideArray
nestedData{
nestedArray
}
}
}
````

**Output: No Data**
````json
{
"data": {
"someEntities": {
"items": []
}
}
}
````

**Query**
````
someEntities(
first: 5
filter: {
and: [
{ nestedData: { author: { eq: "author1" } } }
]
}
) {
items {
contentId,
outsideArray
nestedData{
nestedArray
}
}
}
````

**Output: Returns Data**
````json
{
"data": {
"someEntities": {
"items": [
{
"contentId": "Content2",
"outsideArray": [
"item1",
"item2"
],
"nestedData": [
{
"nestedArray": [
"item1",
"item2"
]
},
{
"nestedArray": [
"item2",
"item3"
]
},
{
"nestedArray": []
},
{
"nestedArray": [
"item4",
"item5"
]
}
]
}
]
}
}
}
````

**Note:** Filtering without array contains clause works. However, including array contains (e.g. { nestedData: { nestedArray: { contains: "item1" } } } ) fails for the same data

### Version

Microsoft.DataApiBuilder 0.11.6-rc+f557b4da4c350f878d9a44632037daef9349f769

### What database are you using?

CosmosDB NoSQL

### What hosting model are you using?

Static Web Apps (SWA)

### Which API approach are you accessing DAB through?

GraphQL

### Relevant log output

```Text
{
"data": {
"someEntities": {
"items": []
}
}
}
```

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Start by reproducing the two GraphQL queries from the simplified schema and entity configuration against Cosmos DB, comparing the author-only filter with the combined nestedArray.contains filter. Done means the combined filter returns the matching entity containing the requested array item instead of an empty result.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, graphql
Área
api, databases
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.