Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Lösungen für allgemeine Probleme mit dem Azure Cosmos DB-Emulator, der Konnektivität und der Schemakonfiguration im Daten-API-Generator.
Häufig gestellte Fragen
Was ist Azure Cosmos DB-Unterstützung in DAB?
Der Daten-API-Generator unterstützt Azure Cosmos DB als NoSQL-Back-End. DAB stellt mithilfe des Azure Cosmos DB .NET SDK eine Verbindung mit Cosmos DB und macht Entitäten als GraphQL-Typen verfügbar. REST-Unterstützung für Cosmos DB ist nicht verfügbar; Alle Abfragen werden über den GraphQL-Endpunkt bereitgestellt.
Welche API verwendet DAB mit Cosmos DB?
DAB verwendet die Azure Cosmos DB für NoSQL-API (früher SQL-API). Andere Cosmos DB-APIs wie MongoDB, Gremlin und Table werden nicht unterstützt. Stellen Sie sicher, dass Ihr Cosmos DB-Konto mit der Azure Cosmos DB für NoSQL-API erstellt wird.
Wird der Cosmos DB-Emulator unterstützt?
Ja. Der Azure Cosmos DB-Emulator wird für die lokale Entwicklung unterstützt. Legen Sie die Verbindungszeichenfolge auf den Standardendpunkt des Emulators fest: AccountEndpoint=https://localhost:8081/;AccountKey=<emulator-key>;. Sie müssen dem selbstsignierten Zertifikat des Emulators auf dem Entwicklungscomputer vertrauen, bevor DAB eine Verbindung herstellen kann.
Häufig auftretende Probleme
Emulatorzertifikat nicht vertrauenswürdig
Symptom: DAB kann keine Verbindung mit dem Emulator herstellen, wobei ein SSL- oder Zertifikatüberprüfungsfehler auftritt.
Ursache: Der Azure Cosmos DB-Emulator verwendet ein selbstsigniertes Zertifikat, das standardmäßig auf dem Betriebssystem nicht vertrauenswürdig ist.
Auflösung: Exportieren und installieren Sie das Emulatorzertifikat aus https://localhost:8081/_explorer/emulator.pem dem vertrauenswürdigen Stammzertifikatspeicher des lokalen Computers. Öffnen Sie unter Windows die Zertifikatdatei, und installieren Sie sie in vertrauenswürdigen Stammzertifizierungsstellen des lokalen Computers>. Starten Sie DAB nach der Installation des Zertifikats neu.
Es kann keine Verbindung mit dem Emulator hergestellt werden.
Symptom: DAB startet nicht und zeigt einen Fehler "Verbindung verweigert" bezogen auf Port 8081 an.
Ursache: Der Emulator wird nicht ausgeführt, oder der Endpunkt oder Kontoschlüssel in der Verbindungszeichenfolge ist falsch.
Auflösung: Starten Sie den Azure Cosmos DB-Emulator über das Startmenü oder indem Sie die ausführbare Datei des Emulators ausführen. Bestätigen Sie, dass die Verbindungszeichenfolge AccountEndpoint=https://localhost:8081/ verwendet und der richtige Emulatorschlüssel genutzt wird, der auf der Daten-Explorer-Seite des Emulators bei https://localhost:8081/_explorer/index.html angezeigt wird.
Die GraphQL-Schemadatei wurde nicht gefunden.
Symptom: DAB startet nicht und zeigt einen Fehler wie Schema file not found oder graphql-schema path is invalid.
Ursache: Der graphql.schema Pfad in dab-config.json verweist auf eine Datei, die nicht vorhanden ist oder einen falschen relativen Pfad verwendet.
Auflösung: Vergewissern Sie sich, dass die Schemadatei an dem in dab-config.jsonder Datei angegebenen Pfad vorhanden ist. Der Pfad ist relativ zum Speicherort der Konfigurationsdatei. Führen Sie dab init mit --cosmosdb_nosql-schema aus, um die Konfiguration mit dem richtigen Schemapfad neu zu erstellen, und bestätigen Sie, dass die .gql- oder .graphql-Datei an diesem Speicherort vorhanden ist.
Abfrage gibt leere Ergebnisse zurück.
Symptom: GraphQL-Abfragen geben eine leere Liste zurück, obwohl der Container Daten enthält.
Ursache: Der Containername oder der Partitionsschlüsselpfad in der Entitätskonfiguration stimmt nicht mit dem tatsächlichen Cosmos DB-Container überein, oder der Datenbankname ist falsch.
Lösung: Überprüfen Sie den Wert der Entität source in dab-config.json und bestätigen Sie, dass er mit dem genauen Containernamen übereinstimmt (Groß-/Kleinschreibung wird beachtet). Überprüfen Sie, ob das database Feld unter data-source dem Namen der Cosmos DB-Datenbank übereinstimmt. Öffnen Sie im Azure-Portal den Daten-Explorer für das Konto, und bestätigen Sie die Datenbank- und Containernamen.
Tcp-Verbindungen im direkten Modus schlagen mit dem Linux-Emulator fehl
Symptom: DAB hängt oder läuft auf Timeout beim Herstellen einer Verbindung mit dem Cosmos DB Linux-Emulator in Docker, auch wenn AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=127.0.0.1 festgelegt ist. Anfragen werden während der Verbindungsversuche verzögert.
Ursache: DAB hardcodes ConnectionMode.Direct, wodurch das Cosmos SDK physische Partitionsendpunkte (z. B. 172.17.0.2:1025010255) erkennt und TCP-Verbindungen zu ihnen öffnet. Auf dem Hostcomputer sind diese Containeradressen nicht erreichbar. Der Gatewaymodus würde den gesamten Datenverkehr über einen einzelnen HTTPS-Endpunkt (Port 8081 im Emulator) weiterleiten und das Problem vollständig vermeiden. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #3401 nachverfolgt wird.
Auflösung: Legen Sie beim Starten des Emulatorcontainers AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=127.0.0.1 fest. Dadurch wird der Emulator gezwungen, 127.0.0.1 als Adresse anzukündigen, wodurch die ermittelten Endpunkte vom Host erreichbar sind. Bis der Gatewaymodus im DAB konfigurierbar ist, wird IP-Override als empfohlene Lösung für die lokale Entwicklung empfohlen.
On-Behalf-Of (OBO)-Authentifizierung wird nicht unterstützt
Symptom: Das Konfigurieren der On-Behalf-Of(OBO)-Authentifizierung für eine azure Cosmos DB-gesicherte DAB-Instanz schlägt fehl, oder das Token wird nicht wie erwartet weitergeleitet.
Ursache: Die OBO-Authentifizierung wird derzeit nur für SQL Server und Azure SQL unterstützt. Die Unterstützung für Azure Cosmos DB wurde noch nicht implementiert. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #3159 nachverfolgt wird.
Auflösung: Verwenden Sie eine unterstützte Authentifizierungsmethode wie den Cosmos DB-Kontoschlüssel oder die verwaltete Identität. Folgen Sie dem GitHub-Issue für Updates, wann die OBO-Unterstützung auf Datenbanken, die kein SQL Server sind, erweitert wird.
GraphQL schlägt bei der Filterung in Cosmos DB fehl
Symptom: Eine GraphQL-Abfrage, die den In-Operator für eine Cosmos DB-gesicherte Entität verwendet, schlägt zur Laufzeit fehl mit der Fehlermeldung: Unbekannte Prädikatoperation IN kann nicht erstellt werden, obwohl der Operator im Schema über Introspektion angezeigt wird.
Ursache: Der In-Operator wird im generierten GraphQL-Schema für IdFilterInput und StringFilterInput verfügbar gemacht, die zugrunde liegende Cosmos DB-Filterübersetzungslogik implementiert sie jedoch nicht. Dieser Konflikt zwischen dem Schema und dem Abfrageausführer ist ein bekannter Fehler, der in GitHub-Problem #3061 nachverfolgt wird.
Auflösung: Vermeiden Sie die Verwendung des In-Operators in GraphQL-Abfragen für Cosmos DB-Entitäten. Verwenden Sie stattdessen eine der folgenden Problemumgehungen:
- Ersetzen Sie es durch mehrere oder +q-Ausdrücke für eine kleine, feste Liste von Werten.
- Verwenden Sie beim Abfragen durch eine bekannte Liste von IDs mehrere Point-Read-Aliase (item_by_pk).
- Filtern Sie clientseitig, nachdem Sie eine breitere Ergebnismenge abgerufen haben.
Aggregationen werden für Cosmos DB nicht unterstützt.
Symptom: GraphQL-Aggregatabfragen (z. B. Anzahl, Summe oder vg) für eine von Cosmos DB unterstützte Entität schlagen fehl oder sind im Schema nicht verfügbar.
Ursache: Der Daten-API-Generator unterstützt derzeit keine Aggregationsvorgänge für Azure Cosmos DB. Aggregationen sind nur für relationale Datenbanken verfügbar. Dies ist eine bekannte Einschränkung, die in GitHub-Problem Nr. 2849 nachverfolgt wird.
Auflösung: Derzeit gibt es keine Problemumgehung innerhalb von DAB. Führen Sie Aggregationen clientseitig nach dem Abrufen des Resultsets aus, oder verwenden Sie die integrierte Abfrage-API von Cosmos DB direkt für Aggregatvorgänge. Folgen Sie dem GitHub-Issue, um auf dem Laufenden zu bleiben.
Pluralabfragen (Listenabfragen) können nicht deaktiviert werden, um ausschließlich Punktabfragen zu erzwingen.
Symptom: Clients können allgemeine Elementlistenabfragen für eine Cosmos DB-Entität ausgeben, die hohe RUs verbrauchen, wenn die Absicht besteht, nur Punktlesevorgänge über item_by_pk zuzulassen.
Ursache: Der Daten-API-Generator stellt derzeit keine Konfigurationsoption bereit, um Mehrfachabfragen zu verhindern und eine Entität auf einzelne Lesevorgänge zu beschränken. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #2433 nachverfolgt wird.
Auflösung: Beschränken Sie als Teilumgehung die Listenaktion in den Berechtigungen der Entität, um einzuschränken, welche Rollen Listenabfragen ausstellen können. Die vollständige Unterdrückung des Plural-Abfragetyps aus dem Schema wird noch nicht unterstützt.
Hierarchische Partitionsschlüssel (MultiHash) werden nicht unterstützt.
Symptom: Mutationen gegen einen Cosmos DB-Container, der hierarchische Partitionsschlüssel verwendet (mehr als einen Partitionsschlüsselpfad), schlagen mit dem Fehler fehl: Der 'kind'-Wert 'MultiHash', der in der Definition des Partitionsschlüssels angegeben ist, ist ungültig. Wählen Sie den Partitionstyp "Hash" aus.
Ursache: Der Daten-API-Generator unterstützt nur Partitionsdefinitionen mit einem Schlüssel (Hash). Container, die mit hierarchischen Partitionsschlüsseln (MultiHash) konfiguriert sind, werden nicht unterstützt. Dies ist eine bekannte Einschränkung, die in GitHub-Problem Nr. 1733 nachverfolgt wird.
Lösung: Derzeit gibt es keinen Workaround innerhalb von DAB. Entwerfen Sie den Container nach Möglichkeit neu, um einen einzelnen Partitionsschlüssel zu verwenden. Wenn für Ihr Datenmodell hierarchische Partitionsschlüssel erforderlich sind, folgen Sie dem GitHub-Problem für Updates, wenn die Unterstützung für mehrere Hashs hinzugefügt wird.
MultiHash-Partitionsschlüssel werden nicht unterstützt.
Symptom: Mutationen gegen einen Cosmos DB-Container, der einen hierarchischen Partitionsschlüssel (Multihash) verwendet, schlagen fehl. Der in der Partitionsschlüsseldefinition angegebene Wert "MultiHash" ist ungültig. Wählen Sie den Partitionstyp "Hash" aus.
Ursache: Der Daten-API-Generator unterstützt nur Hashpartitionsschlüssel mit einem Wert für Azure Cosmos DB. Container, die mit hierarchischen Partitionsschlüsseln (MultiHash) konfiguriert sind, z. B. "/TenantId", "/EntityType", "/EntityId" werden nicht unterstützt. Dies ist eine bekannte Einschränkung, die in GitHub-Problem Nr. 1733 nachverfolgt wird.
Lösung: Derzeit gibt es keine Problemumgehung innerhalb von DAB. Verwenden Sie stattdessen einen Container mit einem einzelnen Hashpartitionsschlüssel. Wenn hierarchische Partitionierung erforderlich ist, sollten Sie den Container umstrukturieren oder dem GitHub-Problem folgen, um Updates zu erhalten, wann die Unterstützung für MultiHash-Partitionsschlüssel hinzugefügt wird.
Auf Cosmos DB sind mehrere Mutationen nicht atomar.
Symptom: Wenn mehrere GraphQL-Mutationen in einer einzigen Anforderung gegen Cosmos DB-Entitäten gesendet werden, führt ein Fehler in einer Mutation nicht zu einem Rollback der anderen. Partielle Schreibvorgänge können auftreten.
Ursache: Der Daten-API-Generator umschließt nicht mehrere Cosmos DB-Mutationen in einem Transaktionsbatch. Im Gegensatz zu relationalen Datenbanken, bei denen mehrere Mutationen in einer Anforderung atomar ausgeführt werden, werden Cosmos DB-Mutationen unabhängig voneinander ausgegeben. Dies ist eine bekannte Einschränkung, die im GitHub-Problem #1621 nachverfolgt wird.
Auflösung: Entwerfen Sie Ihre Anwendung so, dass jede Cosmos DB-Mutation unabhängig behandelt wird. Wenn Atomizität erforderlich ist, verwenden Sie das Cosmos DB SDK direkt mit Unterstützung für Transaktionsbatches, die auf Elemente innerhalb derselben logischen Partition beschränkt sind. Folgen Sie dem GitHub-Issue, um Updates zu erhalten, sobald die transaktionsbasierte Mutationsunterstützung für Cosmos DB hinzugefügt wird.
Der GraphQL-Typname in der Schemadatei stimmt nicht mit der Entitätskonfiguration überein.
Symptom: DAB beginnt ohne Fehler, aber Abfragen geben unerwartete Ergebnisse oder den falschen Typ zurück, da der in schema.gql definierte GraphQL-Typname nicht mit dem Singulartypnamen übereinstimmt, der für die Entität in dab-config.jsonkonfiguriert ist.
Ursache: Der Daten-API-Generator überprüft derzeit nicht, ob der GraphQL-Typname in der Schemadatei mit dem für die Entität deklarierten Singulartypnamen übereinstimmt. Ein unbemerkter Missstand erzeugt ein inkonsistentes Schema. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #1556 nachverfolgt wird.
Auflösung: Stellen Sie manuell sicher, dass der Typname in schema.gql (über die @model Direktive festgelegt) mit dem Singularwert in der Graphql.type-Konfiguration der Entität in dab-config.jsonübereinstimmt. Wenn dab-config.json z. B. "singular": "Location" deklariert, sollte die Schemadatei den Typ Location @model(name:"Location" enthalten.
Der GraphQL-Typname in der Schemadatei stimmt nicht mit dem Singularnamen der Entität überein.
Symptom: DAB beginnt ohne Fehler, aber Abfragen geben unerwartete Ergebnisse oder den falschen Typ zurück, da der in schema.gql definierte GraphQL-Typname nicht mit dem Singulartypnamen übereinstimmt, der für die Entität in dab-config.jsonkonfiguriert ist.
Ursache: Der Daten-API-Generator überprüft derzeit nicht, ob der @model Direktivenname in der GraphQL-Schemadatei dem Singulartypnamensatz für die Entität entspricht. Wenn sie unterschiedlich sind, führt das stillschweigend zu falschem Schemaverhalten. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #1556 nachverfolgt wird.
Auflösung: Stellen Sie manuell sicher, dass der Typname in schema.gql exakt mit dem Singularwert in der Graphql.type-Konfiguration der Entität in dab-config.jsonübereinstimmt. Wenn die Entität z. B. "singular" definiert: "Location", sollte die Schemadatei "ype Location @model(name:"Location" deklarieren. Führen Sie "dab validate" aus, nachdem Sie Änderungen vorgenommen haben, um andere Konfigurationsfehler abzufangen.
Enumerationstypen in der GraphQL-Schemadatei führen zu einem Fehler beim Schemaaufbau.
Symptom: DAB kann nicht mit einer HotChocolate.SchemaException beginnen: Typverweis kann nicht aufgelöst werden ... OrderByInput-Fehler, wenn die Cosmos DB schema.gql-Datei einen GraphQL-Num-Typ definiert, der für ein Objekttypfeld verwendet wird.
Ursache: Der Daten-API-Generator unterstützt derzeit keine GraphQL-Enumerationstypen in der Cosmos DB-Schemadatei. Wenn eine Enumeration als Feldtyp verwendet wird, kann der Schema-Generator den entsprechenden OrderByInput-Typ nicht generieren und löst eine unbehandelte Ausnahme aus. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #748 nachverfolgt wird.
Auflösung: Ersetzen Sie Enumerationsfelder durch ihre skalaren Entsprechungen (z. B. "String" anstelle eines benutzerdefinierten Enumerationstyps) in schema.gql. Wenden Sie die Enumerationsüberprüfung in Ihrer Anwendungsschicht an, anstatt in der DAB-Schemadefinition.
Enumerationstypen im GraphQL-Schema führen dazu, dass DAB beim Start fehlschlägt
Symptom: DAB kann nicht mit einem HotChocolate.SchemaException-Fehler beginnen, z. B. Fehler beim Beheben des Typverweises "None: FooOrderByInput", wenn die Cosmos DB GraphQL-Schemadatei einen Aufzählungstyp definiert, der für ein Modell verwendet wird.
Ursache: Der Schema-Generator des Daten-API-Generators behandelt graphQL-Enumerationstypen, die in schema.gql definiert sind, nicht ordnungsgemäß. Wenn ein Enum in einem Modell als Feldtyp referenziert wird und die Generierung des internen Typs OrderByInput nicht gelingt, stürzt die Schemainitialisierung ab. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #748 nachverfolgt wird.
Auflösung: Vermeiden Sie die Definition von GraphQL-Enum-Typen in schema.gql für Cosmos-DB-Entitäten. Ersetzen Sie als Problemumgehung Enum-Felder durch "String" und erzwingen Sie gültige Werte auf der Anwendungsebene. Folgen Sie dem GitHub-Issue für Updates, wenn die Unterstützung für Enum hinzugefügt wird.
Feldzuordnungen (Aliase) werden für Cosmos DB-Entitäten nicht unterstützt.
Symptom: Ein Mappings-Abschnitt, der für eine Cosmos DB-Entität in dab-config.json definiert ist, hat keine Wirkung; die ursprünglichen Feldnamen sind weiterhin im GraphQL-Schema sichtbar, nicht die konfigurierten Aliase.
Ursache: Das Zuordnungsfeature, das das Verfügbarmachen von Datenbankspaltennamen unter verschiedenen Feldnamen in der API ermöglicht, wird nur für relationale Datenbanken implementiert. Cosmos DB-Entitäten unterstützen derzeit keine Feldzuordnungen. Dies ist eine bekannte Einschränkung, die in GitHub-Problem Nr. 1512 nachverfolgt wird.
Auflösung: Verwenden Sie die Feldnamen genau so, wie sie in den Cosmos DB-Dokumenten angezeigt werden. Wenn Aliasing erforderlich ist, wenden Sie sie auf die Clientanwendungsebene an. Verfolgen Sie das GitHub-Thema für Updates, sobald die Zuordnungsunterstützung für Cosmos DB verfügbar ist.
GraphQL-Mutationsvariablen sind keine aufgelösten Variablennamen, die anstelle von Werten gespeichert werden
Symptom: Eine GraphQL-Mutation, die Variablen verwendet (z. B. createExample(item: { id: , name: })) speichert die Variablennamen "" und "" in der Datenbank anstelle der tatsächlichen Werte, die in der Ariables-Nutzlast übergeben werden.
Ursache: Der Daten-API-Generator löst derzeit keine GraphQL-Variablenverweise in Mutationseingaben für Cosmos DB auf. Die Variablenersetzung wird übersprungen, und der Name der Literalvariable wird als Feldwert geschrieben. Dies ist ein bekannter Fehler, der im GitHub-Problem #1482 nachverfolgt wird.
Auflösung: Inlineieren Sie die Variablenwerte direkt im Mutationstext, anstatt GraphQL-Variablen zu verwenden. Ersetzen Sie z. B. "ID: durch ID: "1234". Dies ist nicht ideal für den Produktionseinsatz. Folgen Sie daher dem GitHub-Issue für Updates, wann das Handling von Variablen bei Cosmos DB-Mutationen behoben ist.
Union-Typen in der GraphQL-Schemadatei verursachen einen Fehler 500
Symptom: DAB gibt einen Statuscode von 500 für alle GraphQL-Anforderungen zurück, wenn schema.gql einen GraphQL-Union-Typ definiert. Die Startprotokolle geben an, dass eine HotChocolate.SchemaException aufgetreten ist: Der Typverweis kann nicht aufgelöst werden ... OrderByInput.
Ursache: Der Daten-API-Generator unterstützt keine GraphQL-Union-Typen in der Cosmos DB-Schemadatei. Wie Enumerationstypen führen Union-Typen dazu, dass der Schema-Generator beim Generieren von Sortier-/Filtereingabetypen fehlschlägt. Dies ist ein bekannter Fehler, der in GitHub-Problem #1384 nachverfolgt wird.
Lösung: Entfernen Sie Unionstyp-Definitionen aus schema.gql. Modellieren Sie polymorphe Daten mithilfe eines einzelnen Objekttyps mit optionalen Feldern, oder teilen Sie die Daten auf separate Entitäten. Folgen Sie dem GitHub-Issue, um über Updates zu erfahren, wann die Unterstützung für Union-Typen hinzugefügt wird.
Die Erstellung einer Mutation schlägt zur Laufzeit fehl, wenn die ID im Schema als nullable definiert ist.
Symptom: Eine Create Mutation gibt einen Laufzeitfehler zurück, obwohl das Schema gültig erscheint. Der Fehler tritt auf, weil das ID-Feld nicht angegeben wurde oder null war.
Ursache: Cosmos DB erfordert das ID-Feld für jedes Dokument und verwendet es als Teil des Partitionsschlüssels. Wenn schema.gql id als NULL-Werte deklariert (z. B. ID: ID anstelle von ID: ID!), akzeptiert DAB das Schema, schlägt jedoch zur Laufzeit fehl, wenn eine Create-Mutation das Feld auslässt. Das Schema sollte während der Schemaüberprüfung nicht null erzwingen, tut dies jedoch derzeit nicht. Diese Lücke wird in GitHub-Problem Nr. 1238 nachverfolgt.
Auflösung: Deklarieren Sie das ID-Feld immer als nicht null im Cosmos DB GraphQL-Schema:
graphql type MyEntity @model(name: "MyEntity") { id: ID! ... }
Sicherstellen der ID: ID! führt dazu, dass Clients einen eindeutigen Fehler auf Schemaebene erhalten, wenn die ID nicht angegeben wird, statt eines undurchsichtigen Laufzeitfehlers.
Kreisförmige GraphQL-Beziehungen verursachen beim Start eine Stapelüberlaufausnahme
Symptom: DAB stürzt beim Start mit einer Stapelüberlaufausnahme ab, wenn schema.gql Typen definiert, die in einer zyklischen Referenz stehen (z. B. Spieler referenziert Spiel und Spiel referenziert Spieler).
Ursache: Der Schema-Generator führt alle Typverweise rekursiv durch, um Mutationseingabetypen zu generieren. Zirkelbeziehungen verursachen unendliche Rekursion und erschöpfen den Aufrufstapel. Dies ist ein bekannter Fehler, der in GitHub-Problem #746 nachverfolgt wird.
Lösung: Vermeiden Sie zyklische Typreferenzen in schema.gql. Unterbrechen Sie den Zyklus, indem Sie den Rückverweis aus einem der Typen entfernen oder die Beziehung als Liste von IDs (Skalarfelder) statt geschachtelten Objekttypen modellieren. Folgen Sie dem GitHub-Issue, um Aktualisierungen zu erhalten, wann Zirkelbeziehungen unterstützt werden.
Partitionsschlüssel ist immer ID benutzerdefinierte Partitionsschlüsselpfade werden nicht unterstützt
Symptom: DAB funktioniert nur mit Cosmos DB-Containern, die /id als Partitionsschlüssel verwenden. Container, die von einem anderen Feld partitioniert werden (z. B. "/userId" oder "/category"), können nicht korrekt abgefragt oder verändert werden.
Ursache: Der Data-API-Generator hartcodiert die ID als Partitionsschlüssel für alle Cosmos DB-Entitäten. Es gibt keine Möglichkeit, einen benutzerdefinierten Partitionsschlüsselpfad in dab-config.json oder schema.gql anzugeben. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #747 nachverfolgt wird.
Auflösung: Entwerfen Sie neue Container mit /id als Partitionsschlüssel bei Verwendung von DAB. Für vorhandene Container mit einem anderen Partitionsschlüssel wird DAB derzeit nicht unterstützt. Folgen Sie dem GitHub-Issue für Updates, um über die Hinzufügung konfigurierbarer Partitionsschlüssel informiert zu werden.
Das Abfragen geschachtelter Arrays in einem Dokument (In-Element-Verknüpfungen) wird nicht unterstützt.
Symptom: Sie können geschachtelte Arrayeigenschaften in einem Cosmos DB-Dokument nicht mithilfe von DAB filtern oder durchlaufen. Abfragen, für die ein Cosmos DB JOIN-Element über Arrayelemente hinweg erforderlich wäre, geben keine Ergebnisse oder einen Fehler zurück.
Ursache: Der Daten-API-Generator unterstützt keine intradokumentinternen Verknüpfungen von Cosmos DB (auch als In-Element-Verknüpfungen bezeichnet), die zum Abfragen geschachtelter Arrays innerhalb eines einzelnen Dokuments erforderlich sind. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #262 nachverfolgt wird.
Lösung: Flachen Sie geschachtelte Arrays zu separaten Entitäten oder untergeordneten Dokumenten ab, wenn Sie auf deren Inhalt filtern müssen. Alternativ können Sie die Nachbearbeitung des vollständigen Dokuments auf Der Anwendungsebene durchführen. Folgen Sie dem GitHub-Issue, um Updates zu erhalten, wann die Unterstützung für die Verknüpfung innerhalb eines Dokuments hinzugefügt wird.