2015-04-08 4 views
5

Ich habe Loopback verwendet, um eine API zu erstellen. Die Dokumentation ist in der Regel wirklich gut, beantwortet aber nicht wirklich meine Frage zu folgendem: Wie kann ich ein eingebautes Modell erweitern (nicht ersetzen)?Loopback - Einfachste Möglichkeit, ein eingebautes Modell zu erweitern

Das vielversprechendste Stück Information kam von this page - es die Art und Weise gibt eine Klasse von einer anderen Klasse zu stützen, über Vererbung. Dies ist nützlich, aber nicht ideal - ich möchte zum Beispiel Beziehungen zu benutzerdefinierten Modellen aus den Lagermodellen erstellen - "Rolle" sollte viele "Erlaubnis" haben.

Die Seite, die ich erwähne, zeigt auch eine Javascript-Datei, die sich unter common/models/<modelName>.js befindet, wo Sie angeben, dass Sie ein Modell basierend auf den Eigenschaften und Optionen, die Sie ihm geben, "erweitern" können. Der Server scheint nie die Datei zu schlagen ... Zum Beispiel - ich in common/models/role.js mit folgendem Inhalt eine Datei setzen:

var properties = { 
    exampleProperty: {type: String, required: true} 
}; 


var user = loopback.Model.extend('Role', properties); 
console.log('test'); 

Zunächst einmal, es scheint nicht, die Datei überhaupt zu schlagen (kein console.log Ausgang gegeben). Zweitens, offensichtlich wegen des ersten Punktes, erweitert es das Modell nicht mit den Eigenschaften, die ich erstellt habe.

Fehle ich etwas offensichtlich oder ist die Dokumentation einfach falsch?

+1

das gleiche Problem hier. Dokumente scheinen ziemlich unvollständig zu sein, wenn man erklärt, wie man eingebaute Modelle erweitert - sie scheinen zu vermuten, dass man sie erweitern kann, aber wie du, fand ich heraus, dass die Verwendung von zB user.json/.js keine Option ist. hast du die Vererbung wie hier vorgeschlagen? Ich bin besorgt, dass es Zugangsmarken brechen oder allgemein mehr Probleme verursachen wird. –

+0

Hallo, ja, Vererbung ist der Weg zu gehen. Wenn Sie die Basis-Klasse "User" erweitern, erhalten Sie die gleichen Methoden und irgendwie wird das accessToken-Zeug auch für Sie ermittelt. – freshnode

Antwort

3

Sie sollten ein neues Modell über slc loopback:model mit dem Namen user generieren. Standardmäßig hat der integrierte Benutzer den Namen User, weshalb Sie in Kleinbuchstaben user oder sogar UserModel verwenden können, wenn Sie bevorzugen. Wenn Sie vom Modellgenerator für ein Basismodell dazu aufgefordert werden, wählen Sie User. Siehe https://github.com/strongloop/loopback-faq-user-management/blob/master/common/models/user.json#L3

+0

Danke, ich denke, die Dokumentation ist ein bisschen irreführend. Ich wollte den ursprünglichen Modellen neue Eigenschaften und Beziehungen hinzufügen, aber ich denke, das ist nicht der beste Weg. – freshnode

+0

Ja, das eingebaute Modell zu erweitern und dann Ihre Eigenschaften und Beziehungen hinzuzufügen, ist definitiv der richtige Weg. – superkhau