loopback - Model
loopback bietet verschiedene Möglichkeiten:
- Du kannst mit einer bestehenden Datenbank arbeiten und deren ERM importieren oder eine eigene definieren und diese dann in der ausgewählten Datenbank erstellen lassen.
- Du kannst zwischen verschiedenen Datenbanken wählen. Im Unterricht hast du bestimmt MySQL kennengelernt. Es gibt auch die
memory
-Datenbank verwenden. Diese benötigt keine extra Datenbank sondern wird von loopback bereitgestellt. In den Standarteinstellungen kann diese nur 100 kByte groß werden. Für größere Datenmengen empfiehlt sich eine andere Datenbank.
Wir werden in diesem Beispiel die memory
-Datenbank verwenden und diese von loopbkack erstellen lassen.
Normalerweise wird eine memory
-Datenbank beim Neustart des Servers gelöscht. Damit wir diese persistieren können, führen wir folgende Änderung durch:
server\datasources.json
{
"db": {
"name": "db",
"connector": "memory",
"file": "server/db.json"
}
}
Deine Daten werden nun in einer JSON-Datei im Verzeichnis Server gespeichert.
Öffne die Kommandozeile/Terminal im Ordner deines Projekts und erstelle ein Model (hier Video). Wähle als Basisklasse PersistedModel
aus. Das Modell muss im deutschen als allgemein
gekennzeichnet werden (Im englischen würde da richtiger public
stehen, also dass das Modell nicht nur intern im Server sondern auch durch die Clients angesprochen werden darf).
J:\Projekte\edutube>lb model
? Modellnamen eingeben: Video
? Wählen Sie die Datenquelle aus, an die Video angehängt werden soll: db (memory)
? Basisklasse des Modells auswählen PersistedModel
? Video über die REST-API verfügbar machen? Yes
? Angepasste Pluralform (zum Erstellen des REST-URL):
? Allgemeines Modell oder nur Server? allgemein
Fügen Sie nun einige Video-Eigenschaften hinzu.
Geben Sie einen leeren Eigenschaftsnamen ein, wenn Sie fertig sind.
? Eigenschaftsname: url
? Eigenschaftstyp: string
? Erforderlich? Yes
? Standardwert[leer lassen für keine Angabe]:
Fügen Sie eine weitere Video-Eigenschaft hinzu.
Geben Sie einen leeren Eigenschaftsnamen ein, wenn Sie fertig sind.
? Eigenschaftsname: name
? Eigenschaftstyp: string
? Erforderlich? Yes
? Standardwert[leer lassen für keine Angabe]:
Fügen Sie eine weitere Video-Eigenschaft hinzu.
Geben Sie einen leeren Eigenschaftsnamen ein, wenn Sie fertig sind.
? Eigenschaftsname: subject
? Eigenschaftstyp: string
? Erforderlich? Yes
? Standardwert[leer lassen für keine Angabe]:
Fügen Sie eine weitere Video-Eigenschaft hinzu.
Geben Sie einen leeren Eigenschaftsnamen ein, wenn Sie fertig sind.
? Eigenschaftsname:
Nun erstellen wir die Relation:
J:\Projekte\edutube>lb relation
? Modell auswählen, von dem aus die Beziehung erstellt werden soll: Video
? Beziehungstyp: belongs to
? Modell zum Erstellen einer Beziehung auswählen: (Sonstige)
? Modellnamen eingeben: User
? Eigenschaftsnamen für die Beziehung eingeben: user
? Angepassten Fremdschlüssel eingeben (optional):
? Zulassen, dass die Beziehung in REST-APIs verschachtelt ist: No
? Inaktivieren, um dafür zu sorgen, dass die Beziehung nicht eingeschlossen wird: Yes
Zulassen, dass die Beziehung in REST-APIs verschachtelt ist
möchte wiseen, ob man von /video/1
auch noch /user/login
anhängen darf. Das ist in unserem Fall nicht sinnvoll. Wenn du aber etwa das Modell Comment
anlegst solltest du diese Option aktivieren, damit du /video/1/comment
eingeben kannst und mit POST
einen zum Video gehörenden Kommentar anfügen kannst.