Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az entitáskapcsolatok lehetővé teszik a GraphQL-lekérdezések számára a kapcsolódó entitások közötti áthaladást, így összetett adatalakzatok hozhatók létre egyetlen lekérdezéssel. Például:
{
books {
items {
id
title
authors {
items {
first_name
last_name
}
}
}
}
}
Ennek eléréséhez a DAB-nak el kell mondania, hogyan kapcsolódnak az entitások a relationships konfigurációs fájl szakaszán keresztül.
Konfiguráció
Entitások közötti kapcsolat definiálása:
- Használja az
relationshipsobjektumot az entitáskonfigurációban. - Adja meg a
target.entitynevet. - Állítsa be a
cardinalityelemet"one"vagy"many"értékre. - Igény szerint adja meg
source.fieldséstarget.fields. - Több a többhöz viszonyok modellezéséhez használja a
linking.object-t az illesztési tábla felfedése nélkül.
Példa parancssori felületre
dab update Book \
--relationship authors \
--target.entity Author \
--cardinality many \
--relationship.fields "id:id" \
--linking.object "dbo.books_authors" \
--linking.source.fields "book_id" \
--linking.target.fields "author_id"
Példa konfigurációra
"Book": {
"source": "dbo.books",
"relationships": {
"authors": {
"cardinality": "many",
"target.entity": "Author",
"source.fields": [ "id" ],
"target.fields": [ "id" ],
"linking.object": "dbo.books_authors",
"linking.source.fields": [ "book_id" ],
"linking.target.fields": [ "author_id" ]
}
}
}
Egy a többhöz
- A számosság
"many"használata. - Példa: A
Series-nak sokBooks. - A DAB kikövetkezheti a mezőket, ha létezik idegen kulcs.
dab update Series \
--relationship books \
--target.entity Book \
--cardinality many
Több az egyhez
- Számosság
"one"használata. - Példa: A
Bookaz egyikhezSeriestartozik.
dab update Book \
--relationship series \
--target.entity Series \
--cardinality one
Több-a-többhöz (kapcsoló objektum)
- Használjon olyan kapcsolótáblát, amely nem érhető el a GraphQL-ben.
- A mezők forrásból célhoz való csatolásának definiálása az illesztési táblán keresztül.
dab update Author \
--relationship books \
--target.entity Book \
--cardinality many \
--relationship.fields "id:id" \
--linking.object "dbo.books_authors" \
--linking.source.fields "author_id" \
--linking.target.fields "book_id"
Több a többhöz (explicit kapcsoló entitás)
- Tegye elérhetővé a kapcsolótáblát GraphQL-objektumként.
- Adjon meg kapcsolatokat mindhárom entitáson.
dab add BookAuthor \
--source dbo.books_authors \
--permissions "anonymous:*"
dab update BookAuthor \
--relationship book \
--target.entity Book \
--cardinality one \
--relationship.fields "book_id:id"
dab update BookAuthor \
--relationship author \
--target.entity Author \
--cardinality one \
--relationship.fields "author_id:id"
Kölcsönös kapcsolatok
Ha mindkét irányban engedélyezni szeretné a navigációt (például a BookAuthor forrás és AuthorBooka célmező között), adjon meg egy második kapcsolatot a cél entitáson, amely megfordítja a forrás- és célmezőket.
példa
dab update Author \
--relationship books \
--target.entity Book \
--cardinality many \
--relationship.fields "id:id" \
--linking.object "dbo.books_authors" \
--linking.source.fields "author_id" \
--linking.target.fields "book_id"
Ez párosul a Book-től Author-ig tartó kapcsolattal, és lehetővé teszi a szimmetrikus bejárást a GraphQL-ben.
{
authors {
items {
first_name
books {
items {
title
}
}
}
}
}
GraphQL-támogatás
- A kapcsolódó mezők beágyazott objektumokként jelennek meg.
- A számosság határozza meg, hogy egy lista vagy egy objektum lesz-e visszaadva.
- A GraphQL-típusnevek és -mezők egyeznek a konfiguráció nevével.
Korlátozások
- A kapcsolatok megkövetelik, hogy az entitások ugyanabban a konfigurációs fájlban létezhessenek.
- Csak az egyszeri ugrásos navigáció támogatott.
- A ciklusok és a mély beágyazások nincsenek optimalizálva.
- A REST nem támogatja a kapcsolatokat (csak GraphQL).