2016-07-14 25 views
0

Ich habe mehrere Loopback-Modelle und möchte ihnen gemeinsame Funktionen hinzufügen. Ich bin nicht wirklich sicher, ob ich loopback extend Ansatz verstehe, aber ich habe ein Dictionary Modell erstellt, stellen Sie andere Modelle base Eigenschaft auf Dictionary und steckte hier fest.Loopback-Elternmodell - wie Eigenschaften eingestellt und Kindmodelle erstellt werden

Im Wesentlichen muss ich eine Instanz des Kindmodells erstellen, einige Daten abrufen und einen Hash erstellen. Dann möchte ich app.models.ChildModel.createHash() mehrmals im Boot-Skript aufrufen, um ein Wörterbuch für jedes der Modelle zu erstellen.

Ich bin mir nicht sicher, wo ich anfangen soll .. Wie gebe ich den Namen der Kindklasse (oder Instanz) an Eltern? Ich brauche es offensichtlich, um die Daten abzufragen.

Ich habe eine funktionierende Lösung für ein konkretes Regions Modell

module.exports = function(Regions){ 
var countriesHash={}; 
Regions.setup=function(next){ 
    Regions.find({where:{type:'Country'}}, function(err, countries){ 
     countries.forEach(function(country){ 
      countriesHash[country.id]=country; 
     }); 
     console.log('hash built'); 
     next(); 
    }); 
}; 

aber ich will es zu abstrakt Dictionary Klasse Refactoring und nur ein paar Eigenschaften, wie zB Kindernamen und where in konkreten Modellen gesetzt.

Antwort

1

Sie können mixin (here) verwenden, um gemeinsam genutzte Funktionen dort zu platzieren und in Modellen zu verwenden.

Sie können ihnen auch einige Optionen senden.

+0

Ich versuchte mixin module.exports mit = function (Modell, Optionen) { Model.createHash = function (nächste) { Model.find ({where: options.where}, Funktion (err, items) { aber die Items sind leer, ich denke, das liegt am generischen Model, nicht an einer bestimmten Modelinstanz –

+0

schlag das, es funktioniert perfekt Ich denke das letzte Mal habe ich versucht das Mixin gab es einen anderen Fehler der das Ergebnis geleert hat viel. –