Azure / Azure/data-api-builder

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

Offen
#2,058 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug graphql triage
Vorherrschende Sprache
C#
Sterne
1.5k
Forks
370
Ø Merge
3 T. 22 Std.
Gemergte PRs (30 T.)
9

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, graphql
Bereich
api, databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.