Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozwiązania typowych problemów z emulatorem, łącznością i konfiguracją schematu usługi Azure Cosmos DB w narzędziu Data API Builder.
Często zadawane pytania
Co to jest obsługa usługi Azure Cosmos DB w języku DAB?
Konstruktor interfejsu API danych obsługuje usługę Azure Cosmos DB jako zaplecze NoSQL. DAB łączy się z usługą Cosmos DB przy użyciu Azure Cosmos DB .NET SDK i udostępnia jednostki jako typy GraphQL. Obsługa rest dla usługi Cosmos DB jest niedostępna; Wszystkie zapytania są obsługiwane za pośrednictwem punktu końcowego GraphQL.
Jakiego interfejsu API używa DAB z usługą Cosmos DB?
DAB używa interfejsu API NoSQL w usłudze Azure Cosmos DB (wcześniej interfejs API SQL). Inne interfejsy API usługi Cosmos DB, takie jak MongoDB, Gremlin i Table, nie są obsługiwane. Upewnij się, że konto usługi Cosmos DB zostało utworzone przy użyciu interfejsu API NoSQL usługi Azure Cosmos DB .
Czy emulator usługi Cosmos DB jest obsługiwany?
Tak. Emulator usługi Azure Cosmos DB jest obsługiwany na potrzeby programowania lokalnego. Ustaw parametry połączenia na domyślny punkt końcowy emulatora: AccountEndpoint=https://localhost:8081/;AccountKey=<emulator-key>;. Zaufanie do certyfikatu z podpisem własnym emulatora na maszynie deweloperskiej jest konieczne, zanim DAB będzie mógł się połączyć.
Typowe problemy
Certyfikat emulatora nie jest zaufany
Objaw: DAB nie może połączyć się z emulatorem z powodu błędu weryfikacji certyfikatu lub protokołu SSL.
Przyczyna: Emulator usługi Azure Cosmos DB używa certyfikatu z podpisem własnym, który nie jest domyślnie zaufany w systemie operacyjnym.
Rozdzielczość: Wyeksportuj i zainstaluj certyfikat emulatora z https://localhost:8081/_explorer/emulator.pem do magazynu zaufanych certyfikatów głównych komputera lokalnego. W systemie Windows otwórz plik certyfikatu i zainstaluj go w zaufanych głównych urzędach certyfikacji komputera > lokalnego. Uruchom ponownie język DAB po zainstalowaniu certyfikatu.
Nie można nawiązać połączenia z emulatorem
Objaw: DAB nie uruchamia się lub występuje błąd odmowy połączenia wskazujący na port 8081.
Przyczyna: Emulator nie jest uruchomiony lub klucz punktu końcowego lub klucz konta w ciągu połączenia jest niepoprawny.
Rozdzielczość: Uruchom emulator usługi Azure Cosmos DB z menu Start lub uruchamiając plik wykonywalny emulatora. Upewnij się, że ciąg połączenia wykorzystuje AccountEndpoint=https://localhost:8081/ oraz prawidłowy klucz emulatora, który jest wyświetlany na stronie eksploratora danych emulatora pod adresem https://localhost:8081/_explorer/index.html.
Nie można odnaleźć pliku schematu GraphQL
Objaw: DAB nie uruchamia się z powodu błędu takiego jak Schema file not found lub graphql-schema path is invalid.
Przyczyna: Ścieżka graphql.schema w dab-config.json wskazuje na plik, który nie istnieje lub używa nieprawidłowej ścieżki względnej.
Rozdzielczość: Sprawdź, czy plik schematu istnieje w ścieżce określonej w dab-config.json. Ścieżka jest względna do lokalizacji pliku konfiguracyjnego. Uruchom dab init z --cosmosdb_nosql-schema, aby ponownie wygenerować konfigurację z poprawną ścieżką schematu, a następnie upewnij się, że plik .gql lub .graphql znajduje się w tej lokalizacji.
Zapytanie zwraca puste wyniki
Objawem: Zapytania GraphQL zwracają pustą listę, mimo że kontener zawiera dane.
Przyczyna: Nazwa kontenera lub ścieżka klucza partycji w konfiguracji encji nie jest zgodna z faktycznym kontenerem usługi Cosmos DB lub nazwa bazy danych jest niepoprawna.
Rozwiązanie: Sprawdź wartość encji source w dab-config.json i upewnij się, że jest zgodna z dokładną nazwą kontenera (uwzględniana wielkość liter). Sprawdź, czy pole database w data-source jest zgodne z nazwą bazy danych Cosmos DB. W witrynie Azure Portal otwórz Eksploratora danych dla konta i potwierdź nazwy baz danych i kontenerów.
Połączenia TCP trybu bezpośredniego kończą się niepowodzeniem z emulatorem systemu Linux
Objaw: Usługa DAB zawiesza się lub przekracza limit czasu podczas nawiązywania połączenia z emulatorem Cosmos DB na systemie Linux w Dockerze, nawet po zdefiniowaniu AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=127.0.0.1. Żądania są wstrzymywane podczas prób ponownego nawiązania połączenia.
Przyczyna: DAB obecnie zakodowuje parametr ConnectionMode.Direct, co powoduje, że Cosmos SDK odnajduje fizyczne punkty końcowe partycji (takie jak 172.17.0.2:1025010255) i otwiera połączenia TCP z nimi. Z maszyny hosta te adresy kontenerów są niedostępne. Tryb gateway będzie kierować cały ruch przez pojedynczy punkt końcowy HTTPS (port 8081 w emulatorze) i uniknąć problemu w pełni. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #3401.
Rozdzielczość: Ustaw AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=127.0.0.1 podczas uruchamiania kontenera emulatora. To wymusza, aby emulator reklamował adres 127.0.0.1, dzięki czemu znalezione punkty końcowe będą osiągalne z hosta. Do czasu skonfigurowania trybu bramy w języku DAB zastąpienie adresu IP jest zalecanym obejściem dla programowania lokalnego.
Uwierzytelnianie w imieniu (OBO) nie jest obsługiwane
Objawem: Konfigurowanie uwierzytelniania On-Behalf-Of (OBO) dla wystąpienia DAB opartego na usłudze Azure Cosmos DB kończy się niepowodzeniem lub token nie jest przekazywany zgodnie z oczekiwaniami.
Przyczyna: Uwierzytelnianie OBO jest obecnie obsługiwane tylko dla SQL Server i Azure SQL. Obsługa usługi Azure Cosmos DB nie została jeszcze zaimplementowana. Jest to znane ograniczenie śledzone w problemie usługi GitHub #3159.
Rozdzielczość: Użyj obsługiwanej metody uwierzytelniania, takiej jak klucz konta usługi Cosmos DB lub tożsamość zarządzana. Śledź problem na GitHub, aby uzyskać informacje na temat aktualizacji, kiedy obsługa OBO zostanie rozszerzona na bazy danych inne niż SQL Server.
GraphQL w filtrze nie działa w usłudze Cosmos DB
Objaw: Zapytanie GraphQL używające operatora in względem jednostki opartej na Cosmos DB kończy się niepowodzeniem podczas wykonywania z błędem "Nie można zbudować nieznanej operacji predykatu IN", mimo że operator in pojawia się w schemacie za pośrednictwem introspekcji.
Przyczyna: Operator in jest widoczny w wygenerowanym schemacie GraphQL dla IdFilterInput i StringFilterInput, ale podstawowa logika tłumaczenia filtrowania w Cosmos DB nie implementuje go. Ta niezgodność między schematem a funkcją wykonawcy zapytania jest znaną usterką śledzona w problemie usługi GitHub #3061.
Rozwiązanie: Unikaj używania operatora in w zapytaniach GraphQL względem obiektów w usłudze Cosmos DB. Zamiast tego użyj jednego z tych obejść:
- Zastąp w, używając wielu wyrażeń lub wyrażeń + q, dla małej, stałej listy wartości.
- Użyj wielu aliasów punktowego odczytu (item_by_pk) podczas wykonywania zapytań według znanej listy identyfikatorów.
- Filtruj po stronie klienta po pobraniu szerszego zestawu wyników.
Agregacje nie są obsługiwane w usłudze Cosmos DB
Symptom: Zapytania agregacyjne GraphQL (takie jak count, sum, lub vg) względem encji opartej na Cosmos DB nie działają lub nie są dostępne w schemacie.
Przyczyna: Konstruktor API danych nie obsługuje obecnie operacji agregacji dla usługi Azure Cosmos DB. Agregacje są dostępne tylko dla relacyjnych baz danych. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #2849.
Rozwiązanie: Obecnie nie ma żadnego obejścia w DAB. Wykonaj agregacje po stronie klienta po pobraniu zestawu wyników lub użyj wbudowanego interfejsu API zapytań usługi Cosmos DB bezpośrednio na potrzeby operacji agregacji. Śledź kwestię na GitHubie, aby uzyskać aktualizacje.
Nie można wyłączyć zapytań w liczbie mnogiej (listy), aby wymusić tylko odczyty punktów
Objaw: Klienci mogą wysyłać szerokie zapytania o listę elementów wobec encji usługi Cosmos DB, zużywając wysokie zasoby RU, kiedy zamiarem jest umożliwienie tylko odczytów punktowych za pośrednictwem _item_by_pk_.
Przyczyna: Obecnie Konstruktor interfejsu API danych nie zapewnia opcji konfiguracji umożliwiającej pomijanie zapytań dla liczby mnogiej i ograniczanie jednostki do jedynie odczytów punktowych. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #2433.
Rozdzielczość: W ramach częściowego obejścia ogranicz akcję listy w uprawnieniach jednostki, aby ograniczyć, które role mogą wystawiać zapytania listy. Pełne pomijanie typu zapytania w liczbie mnogiej ze schematu nie jest jeszcze obsługiwane.
Hierarchiczne klucze partycji (MultiHash) nie są obsługiwane
Objaw: Mutacje względem kontenera usługi Cosmos DB, który używa hierarchicznych kluczy partycji (więcej niż jedna ścieżka klucza partycji), kończą się niepowodzeniem z błędem: Wartość 'kind' 'MultiHash' określona w definicji klucza partycji jest nieprawidłowa. Wybierz typ partycji "Hash".
Przyczyna: Konstruktor interfejsu API danych obsługuje jedynie definicje klucza partycji z pojedynczym kluczem (hash). Kontenery skonfigurowane za pomocą hierarchicznych kluczy partycji (MultiHash) nie są obsługiwane. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1733.
Rozwiązanie: Obecnie w systemie DAB nie ma obejścia. Jeśli to możliwe, przeprojektuj kontener tak, aby używał pojedynczego klucza partycji. Jeśli model danych wymaga hierarchicznych kluczy partycji, śledź zgłoszenie na GitHubie, aby uzyskać aktualizacje dotyczące dodania obsługi wielu wartości skrótu.
Klucze partycji multiHash nie są obsługiwane
Objaw: Mutacje w kontenerze usługi Cosmos DB, który używa hierarchicznego klucza partycji (wieloskrótcowego), kończą się niepowodzeniem, ponieważ wartość 'kind' określona w definicji klucza partycji jest nieprawidłowa. Wybierz typ partycji "Hasz".
Przyczyna: Konstruktor interfejsu API danych obsługuje tylko klucze partycji skrótu o pojedynczej wartości dla usługi Azure Cosmos DB. Kontenery skonfigurowane za pomocą hierarchicznych kluczy partycji (MultiHash), na przykład /TenantId, /EntityType, /EntityId nie są obsługiwane. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1733.
Rozwiązanie: Obecnie nie ma obejścia w systemie DAB. Zamiast tego użyj kontenera z pojedynczym kluczem haszowania. Jeśli wymagane jest partycjonowanie hierarchiczne, rozważ restrukturyzację kontenera lub śledzenie zgłoszenia w GitHubie, aby otrzymać aktualizacje na temat wprowadzenia obsługi klucza partycji MultiHash.
Wiele mutacji nie jest atomowych w usłudze Cosmos DB
Objaw: Gdy wiele mutacji GraphQL jest wysyłanych w jednym żądaniu na jednostkach Cosmos DB, niepowodzenie w jednej mutacji nie cofa innych. Mogą wystąpić częściowe zapisy.
Przyczyna: Budowniczy interfejsu API danych nie opakowuje wielu mutacji usługi Cosmos DB w transakcyjnej partii. W przeciwieństwie do relacyjnych baz danych, gdzie wiele mutacji w żądaniu jest wykonywanych atomowo, mutacje Cosmos DB są wydawane niezależnie. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1621.
Rozdzielczość: Zaprojektuj aplikację tak, aby traktować każdą mutację usługi Cosmos DB jako niezależną. Jeśli niepodzielność jest wymagana, użyj pakietu SDK usługi Cosmos DB bezpośrednio z obsługą wsadu transakcyjnego dla elementów w tej samej partycji logicznej. Śledź zgłoszenie w usłudze GitHub, aby otrzymać aktualizacje na temat dodania obsługi mutacji transakcyjnych dla usługi Cosmos DB.
Nazwa typu GraphQL w pliku schematu jest niezgodna z konfiguracją jednostki
Objaw: DAB uruchamia się bez błędu, ale zapytania zwracają nieoczekiwane wyniki lub niewłaściwy typ, ponieważ nazwa typu GraphQL zdefiniowana w schema.gql nie jest zgodna z jednolitą nazwą typu skonfigurowaną dla jednostki w dab-config.json.
Przyczyna: Konstruktor interfejsu API danych nie sprawdza obecnie, czy nazwa typu GraphQL w pliku schematu jest zgodna z pojedynczą nazwą typu zadeklarowaną dla jednostki. Niezgodność dyskretnie tworzy niespójny schemat. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1556.
Rozwiązanie: Ręcznie sprawdź, czy nazwa typu w pliku schema.gql (ustawiona za pomocą dyrektywy @model) odpowiada pojedynczej wartości w konfiguracji graphql.type jednostki w dab-config.json. Jeśli na przykład dab-config.json deklaruje wartość "singular": "Location", plik schematu powinien zawierać wartość ype Location @model(name:"Location".
Nazwa typu GraphQL w pliku schematu nie jest zgodna z nazwą typu pojedynczego jednostki
Objawem: DAB uruchamia się bez błędu, ale zapytania zwracają nieoczekiwane wyniki lub niewłaściwy typ, ponieważ nazwa typu GraphQL zdefiniowana w schema.gql nie jest zgodna z nazwą typu w liczbie pojedynczej skonfigurowaną dla jednostki w dab-config.json.
Przyczyna: Kreator interfejsu API danych nie weryfikuje obecnie, czy nazwa dyrektywy @model w pliku schematu GraphQL jest zgodna z pojedynczą nazwą typu ustawioną dla jednostki. Gdy różnią się one, niezgodność dyskretnie generuje nieprawidłowe zachowanie schematu. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1556.
Rozwiązanie: Ręcznie upewnij się, że nazwa typu w pliku schema.gql dokładnie odpowiada pojedynczej wartości w konfiguracji graphql.type jednostki w pliku dab-config.json. Jeśli na przykład jednostka definiuje wartość "singular": "Location", plik schematu powinien zadeklarować lokalizację @model(nameype :"Location". Uruchom polecenie dab validate po wprowadzeniu zmian w celu przechwycenia innych błędów konfiguracji.
Typy wyliczeniowe w pliku schematu GraphQL powodują niepowodzenie kompilacji schematu
Objaw: DAB nie uruchamia się z błędem HotChocolate.SchemaException: Nie można rozpoznać odwołania do typu ... Błąd OrderByInput występuje, gdy plik schema.gql w Cosmos DB definiuje typ GraphQL num używany w polu typu obiektu.
Przyczyna: Kreator interfejsu API danych nie obsługuje obecnie typów wyliczeniowych GraphQL w pliku schematu usługi Cosmos DB. Gdy wyliczenie jest używane jako typ pola, konstruktor schematu nie może wygenerować odpowiedniego typu OrderByInput i zgłasza nieobsługiwany wyjątek. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #748.
Rozdzielczość: Zastąp pola wyliczenia ich odpowiednikami skalarnymi (na przykład użyj ciągu zamiast niestandardowego typu wyliczenia) w pliku schema.gql. Zastosuj walidację wyliczenia w warstwie aplikacji, a nie w definicji schematu języka DAB.
Typy wyliczeniowe w schemacie GraphQL powodują, że DAB napotyka błąd podczas startu
Objaw: DAB nie uruchamia się z błędem HotChocolate.SchemaException, takim jak Nie można rozpoznać referencji typu "None: FooOrderByInput", gdy plik schematu GraphQL dla bazy danych Cosmos DB definiuje typ wyliczenia używany w modelu.
Przyczyna: Konstruktor schematów Data API nie obsługuje poprawnie typów enum GraphQL zdefiniowanych w schema.gql. Jeśli wyliczenia są przywoływane jako typ pola w modelu, wewnętrzna generacja typu OrderByInput nie może go rozpoznać, co prowadzi do awarii inicjalizacji schematu. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #748.
Rozwiązanie: Unikaj definiowania typów wyliczenia GraphQL w schema.gql dla jednostek Cosmos DB. Aby obejść ten problem, zastąp pola typu enum typem String i wymuś prawidłowe wartości w warstwie aplikacji. Śledź zgłoszenie na GitHubie, aby uzyskać aktualizacje dotyczące dodania obsługi dla typów wyliczeniowych.
Mapowania pól (aliasy) nie są obsługiwane w przypadku jednostek usługi Cosmos DB
Objaw: Sekcja mapowań zdefiniowana dla jednostki Cosmos DB w dab-config.json nie wpływa na to, że oryginalne nazwy pól są nadal widoczne w schemacie GraphQL, zamiast skonfigurowanych aliasów.
Spowodować: Funkcja mapowań, która umożliwia uwidacznianie nazw kolumn bazy danych pod różnymi nazwami pól w interfejsie API, jest implementowana tylko dla relacyjnych baz danych. Jednostki usługi Cosmos DB nie obsługują obecnie mapowań pól. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #1512.
Rozdzielczość: Użyj nazw pól dokładnie tak, jak są wyświetlane w dokumentach usługi Cosmos DB. Jeśli aliasowanie jest wymagane, zastosuj go w warstwie aplikacji klienckiej. Śledź zgłoszenie na GitHubie, aby uzyskać aktualizacje dotyczące dodania obsługi mapowania dla Cosmos DB.
Zmienne mutacji GraphQL nie są rozpoznawane w nazwach zmiennych przechowywanych zamiast wartości
Objaw: Mutacja GraphQL, która używa zmiennych (na przykład createExample(item: { id: , name: })) przechowuje nazwy zmiennych "" i "" w bazie danych zamiast rzeczywistych wartości przekazanych w ładunku zmiennych.
Przyczyna: Kreator interfejsu API danych nie rozpoznaje obecnie odwołań do zmiennych GraphQL w danych wejściowych mutacji dla Cosmos DB. Zastępowanie zmiennych jest pomijane, a dosłowna nazwa zmiennej jest zapisywana jako wartość pola. Jest to znana usterka śledzona w problemie usługi GitHub #1482.
Rozwiązanie: Wbuduj wartości zmiennych bezpośrednio w treści mutacji zamiast używać zmiennych GraphQL. Na przykład zastąp ciąg id: identyfikatorem: "1234". Dlatego nie jest to idealne rozwiązanie do użytku produkcyjnego, śledź aktualizacje na GitHubie dotyczące naprawy obsługi zmiennych dla mutacji w usłudze Cosmos DB.
Typy związków w pliku schematu GraphQL powodują błąd 500
Objaw: DAB zwraca kod statusu 500 dla wszystkich żądań GraphQL, gdy schema.gql definiuje typ unii GraphQL. W dziennikach uruchamiania jest wyświetlana pozycja HotChocolate.SchemaException: Nie można rozpoznać odwołania do typu ... OrderByInput.
Przyczyna: Konstruktor interfejsu API danych nie obsługuje typów unii GraphQL w pliku schematu bazy danych Cosmos DB. Podobnie jak typy wyliczeniowe, typy związkowe powodują, że konstruktor schematu napotyka problem podczas generowania typów wejściowych sortowania/filtrowania. Jest to znana usterka śledzona w problemie usługi GitHub #1384.
Rozwiązanie: Usuń definicje typów Union z pliku schema.gql. Modelowanie danych polimorficznych przy użyciu pojedynczego typu obiektu z opcjonalnymi polami lub dzielenie danych między oddzielne jednostki. Śledź zgłoszenie GitHub, aby uzyskać aktualizacje dotyczące dodania wsparcia dla typów unii.
Utworzenie mutacji kończy się niepowodzeniem w czasie wykonywania, gdy identyfikator jest określony jako nullable w schemacie.
Objaw: Mutacja tworzenia zwraca błąd wykonania, mimo że schemat jest prawidłowy. Błąd występuje, ponieważ pole identyfikatora nie zostało podane lub miało wartość null.
Przyczyna: Usługa Cosmos DB wymaga pola id dla każdego dokumentu i jest stosowane jako część klucza partycji. Jeśli schema.gql deklaruje id jako nieobowiązkowe (na przykład, id: ID zamiast id: ID!), DAB akceptuje schemat, ale ulega awarii w czasie wykonywania, gdy operacja tworzenia pomija pole. Schemat powinien wymuszać wartość inną niż null w czasie weryfikacji schematu, ale obecnie nie. Ta luka jest śledzona w problemie z usługą GitHub #1238.
Rozdzielczość: Zawsze deklaruj pole id jako inne niż null w schemacie GraphQL usługi Cosmos DB:
graphql type MyEntity @model(name: "MyEntity") { id: ID! ... }
Zapewnianie identyfikatora: ID! powoduje, że klienci otrzymują jasną informację o błędzie na poziomie schematu w przypadku pominięcia identyfikatora, zamiast niejasnego błędu środowiska uruchomieniowego.
Relacje cykliczne GraphQL powodują wyjątek przepełnienia stosu podczas uruchamiania
Objaw: DAB ulega awarii podczas uruchamiania spowodowanej wyjątkiem stack overflow, gdy schema.gql definiuje typy odwołujące się do siebie nawzajem w cyklu (na przykład, gracz odwołuje się do gry, a gra odwołuje się do gracza).
Przyczyna: Konstruktor schematu przetwarza odwołania do wszystkich typów w sposób rekurencyjny, aby generować typy wejściowe dla mutacji. Relacje cykliczne powodują nieskończoną rekursję, wyczerpanie stosu wywołań. Jest to znana usterka śledzona w problemie usługi GitHub #746.
Rozdzielczość: Unikaj odwołań typu cyklicznego w pliku schema.gql. Przerwij cykl, usuwając odwołanie wsteczne z jednego z typów lub modelując relację jako listę identyfikatorów (pól skalarnych) zamiast zagnieżdżonych typów obiektów. Śledź zgłoszenie w GitHub, aby otrzymywać aktualizacje dotyczące wsparcia dla relacji cyklicznych.
Klucz partycji to zawsze pole identyfikatora, a niestandardowe ścieżki kluczy partycji nie są obsługiwane.
Objaw: DAB działa tylko z kontenerami usługi Cosmos DB, które używają /id jako klucza partycji. Kontenery podzielone na partycje według dowolnego innego pola (na przykład /userId lub /category) nie mogą być poprawnie zapytane ani modyfikowane.
Przyczyna: Generator Data API koduje id jako klucz partycji dla wszystkich jednostek usługi Cosmos DB. Nie ma możliwości określenia niestandardowej ścieżki klucza partycji w pliku dab-config.json lub schema.gql. Jest to znane ograniczenie śledzone w problemie z usługą GitHub #747.
Rozwiązanie: Projektuj nowe kontenery z /id jako kluczem partycji podczas korzystania z DAB. W przypadku istniejących kontenerów z innym kluczem partycji język DAB nie jest obecnie obsługiwany. Śledź zgłoszenie w GitHub, aby uzyskać aktualizacje dotyczące dodawania konfigurowalnych kluczy partycji.
Zadawanie zapytań o zagnieżdżone tablice w dokumencie (łączenia wewnątrz elementu) nie jest obsługiwane
Objaw: Nie można filtrować ani przechodzić zagnieżdżonych właściwości tablicy w dokumencie usługi Cosmos DB przy użyciu DAB. Zapytania wymagające złączenia (JOIN) w usłudze Cosmos DB między elementami tablicy nie zwracają żadnych wyników lub wyświetlają błąd.
Przyczyna: Konstruktor API danych nie obsługuje połączeń wewnątrz dokumentu usługi Cosmos DB (nazywanych również połączeniami w elemencie), które są potrzebne do wykonywania zapytań dotyczących zagnieżdżonych tablic w pojedynczym dokumencie. Jest to znane ograniczenie śledzone w problemie usługi GitHub #262.
Rozwiązanie: Spłaszcz zagnieżdżone tablice do oddzielnych encji lub dokumentów podrzędnych, jeśli potrzebujesz filtrować ich zawartość. Alternatywnie wykonaj przetwarzanie końcowe pełnego dokumentu w warstwie aplikacji. Śledź zgłoszenie w GitHub, aby uzyskać aktualizacje dotyczące dodania wsparcia dla dołączania wewnątrz dokumentu.