Azure / Azure/data-api-builder

Cosmos updates require id field on input object as well as mutation argument

Offen
#625 3 Kommentare 0 Reaktionen 2 zugewiesene Personen Beansprucht von @tarazou9 Auf GitHub ansehen
bug cosmos graphql
Vorherrschende Sprache
C#
Sterne
1.5k
Forks
370
Ø Merge
3 T. 22 Std.
Gemergte PRs (30 T.)
9

Beschreibung

Given an ObjectType defined like so:

```graphql
type Planet @model {
id: ID
name: String
character: Character
age: Int
dimension: String
stars: [Star]
}
```

The following update mutation is generated:

```graphql
updatePlanet(
id: ID!
_partitionKeyValue: String!
item: UpdatePlanetInput!
): Planet
```

And it requires an `UpdatePlanetInput` defined here:

```graphql
input UpdatePlanetInput {
id: ID
name: String
character: UpdateCharacterInput
age: Int
dimension: String
stars: [UpdateStarInput]
}
```

The `id` parameter is required to the `updatePlanet` mutation, but it also appears on the `UpdatePlanetInput`, but it's nullable, as the update is a partial update.

When run, this will result in an error that the update has failed because the `id` field wasn't provided on the object passed to `container.ReplaceItem`.

Manually providing the value for `id` on the `item` parameter will solve this (but can run into #296, depending on how you provide the value).

It probably makes sense that if the `id` is not provided on the `item` parameter, we inject it before calling the Cosmos SDK.

Also, should we be using `UpsertItem` not `ReplaceItem` to perform the partial update against a Cosmos document?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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