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 a viselkedésnek a 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
cardinality-ként,"one"-ként vagy"many"-ként. - Igény szerint adja meg
source.fieldséstarget.fields. - Több-a-többhöz kapcsolatok modellezése során használja a
linking.object, anélkül hogy feltárná a kapcsolótáblát.
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
"many"számosság használata. - Példa: Egy
Series(nak) sokBooks-je van. - 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
- Használja a számosság
"one"-t. - Példa: A
Bookaz egyikhezSeriestartozik.
dab update Book \
--relationship series \
--target.entity Series \
--cardinality one
Több-többhöz (kapcsoló objektum)
- Olyan kapcsolótáblát használjon, amely nem jelenik meg 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 kapcsolat (explicit csatoló entitás)
- Hozzon létre 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.
Example
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 a konfiguráció a Book és Author közötti kapcsolatot párosítja é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 egy lépéses navigáció van támogatva.
- A ciklusok és a mély beágyazás nincsenek optimalizálva.
- A REST nem támogatja a kapcsolatokat (csak GraphQL).