Azure / Azure/data-api-builder

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

Aperta
#2,058 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
bug graphql triage
Lingua principale
C#
Stelle
1.5k
Fork
370
Merge medio
3g 22h
PR unite (30g)
9

Descrizione

### 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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp, graphql
Ambito
api, databases
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.