by Guest » 12 Jan 2025, 17:12
Cosmos DB ermöglicht Ihnen, ein Array-Element wie folgt zu aktualisieren:
Code: Select all
ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set($"/dialogs/{dialog.OriginalIndex}", dialog)
});
Dies funktioniert wie erwartet und ersetzt das vorhandene Array-Element. Jetzt möchte ich jedoch ein Array aktualisieren, das sich innerhalb des Arrays befindet. Mit anderen Worten, ich habe ein Array vom Typ Dialog (das sich in einer „Lektion“ befindet). Jeder Dialog verfügt über eine Reihe von Unterdialogen. Deshalb möchte ich jetzt einen der Unterdialoge aktualisieren, ohne das gesamte Array der Unterdialoge zu ersetzen.
Also versuche ich diesen Vorgang:
Code: Select all
ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set
($"/dialogs/{parentDialog.OriginalIndex}/subdialogs/{dialog.OriginalIndex}/", dialog)
});
Und es aktualisiert tatsächlich das Array, aber nicht in der erwarteten Weise. Anstatt das vorhandene Array zu ersetzen, werden sie dem Array-Element als zusätzliche Eigenschaften hinzugefügt. Es sollte das vorhandene Element ersetzen und keine zusätzlichen Eigenschaften hinzufügen.
Code: Select all
"subdialogs": [
{
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": true,
"isMessageSSML": false,
"messages": [
"This is the message."
],
//This is what is added. Note the empty property name!
"": {
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": false,
"isMessageSSML": false,
"messages": [
"This is the message"
]
}
}
[
Der zurückgegebene Statuscode ist „Erfolgreich“ und es wird kein Fehler ausgegeben.
Mache ich etwas falsch, oder handelt es sich um einen Fehler in Cosmos DB? Ich habe bestätigt, dass die Array-Indizes korrekt sind. Es ist auch wirklich seltsam, dass der Name der JSON-Eigenschaft eine leere Zeichenfolge ist.
Wie aktualisiere (patche) ich erfolgreich ein Array, das sich innerhalb eines Arrays befindet?
Cosmos DB ermöglicht Ihnen, ein Array-Element wie folgt zu aktualisieren:
[code]ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set($"/dialogs/{dialog.OriginalIndex}", dialog)
});
[/code]
Dies funktioniert wie erwartet und ersetzt das vorhandene Array-Element. Jetzt möchte ich jedoch ein Array aktualisieren, das sich innerhalb des Arrays befindet. Mit anderen Worten, ich habe ein Array vom Typ Dialog (das sich in einer „Lektion“ befindet). Jeder Dialog verfügt über eine Reihe von Unterdialogen. Deshalb möchte ich jetzt einen der Unterdialoge aktualisieren, ohne das gesamte Array der Unterdialoge zu ersetzen.
Also versuche ich diesen Vorgang:
[code]ItemResponse response = await container.PatchItemAsync(
id: lesson.Id,
partitionKey: partitionKey,
patchOperations: new[] {
PatchOperation.Set
($"/dialogs/{parentDialog.OriginalIndex}/subdialogs/{dialog.OriginalIndex}/", dialog)
});
[/code]
Und es aktualisiert tatsächlich das Array, aber nicht in der erwarteten Weise. Anstatt das vorhandene Array zu ersetzen, werden sie dem Array-Element als zusätzliche Eigenschaften hinzugefügt. Es sollte das vorhandene Element ersetzen und keine zusätzlichen Eigenschaften hinzufügen.
[code]"subdialogs": [
{
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": true,
"isMessageSSML": false,
"messages": [
"This is the message."
],
//This is what is added. Note the empty property name!
"": {
"id": "TESTMIC-COULDNOTHEARYOU",
"regenerateAudio": false,
"isMessageSSML": false,
"messages": [
"This is the message"
]
}
}
[
[/code]
Der zurückgegebene Statuscode ist „Erfolgreich“ und es wird kein Fehler ausgegeben.
Mache ich etwas falsch, oder handelt es sich um einen Fehler in Cosmos DB? Ich habe bestätigt, dass die Array-Indizes korrekt sind. Es ist auch wirklich seltsam, dass der Name der JSON-Eigenschaft eine leere Zeichenfolge ist.
Wie aktualisiere (patche) ich erfolgreich ein Array, das sich innerhalb eines Arrays befindet?