Dynamische Eigenschaften oder Aggregatfunktionen in Loopback-Modellen

8

Wie würde ich in Loopback-Modellen Aggregatfunktionen verwenden? Wenn ich ein Modell habe, das von einer MySQL-Datenbank unterstützt wird, könnte ich Model1 mit einer hasMany-Beziehung zu Model2 (mit einer gegebenen numerischen Eigenschaft) haben und eine Eigenschaft in Model1 haben, die die Summe dieses Feldes von Model2 ergreift?

%Vor%

Was ist in einer separaten Sache die richtige Art, eine Bedingung in ein Modell zu setzen, so dass der von einem Getter zurückgegebene Wert von einem Ausdruck abhängt? Ich möchte einen Wert aus einer Beziehung zurückgeben, wenn sie existiert, andernfalls gebe ich den Wert zurück, der auf dem primären Modell existiert.

Ich habe das versucht (Pseudocode):

%Vor%

Am Ende bekomme ich jedoch einen RangeError: Maximum call stack size exceeded -Fehler (ähnlich dem, was in diese Frage ). Ich gehe davon aus, dass es den Getter rekursiv immer wieder aufruft, aber ich bin mir nicht sicher, wie ich das Problem lösen könnte.

Vielen Dank im Voraus ...

    
jcq 22.08.2014, 02:19
quelle

4 Antworten

5

AFAIK Loopback unterstützt zur Zeit keine Aggregatfunktionen / Eigenschaften. Bitte öffnen Sie ein GitHub-Problem , um dies als Feature-Anfrage zu verfolgen.

Beachten Sie, dass der Zugriff auf Daten verwandter Modelle eine asynchrone Operation ist. Daher ist es nicht möglich, eine Eigenschaft (eine Getter-Funktion) zuverlässig zu implementieren, um das aggregierte Ergebnis zurückzugeben.

Hier ist ein Mock-Up, das zeigt, wie man eine berechnete total korrekt implementiert:

%Vor%
  

Was ist in einer separaten Sache die richtige Art, eine Bedingung in ein Modell zu setzen, so dass der von einem Getter zurückgegebene Wert von einem Ausdruck abhängt?   Ich bekomme einen RangeError: Maximum call stack size exceeded Fehler

Wie ich in der Antwort, auf die Sie verlinkt sind, erklärt habe, ruft this.total Ihre benutzerdefinierte Getter-Funktion auf, die wiederum this.total aufruft usw.

Die Lösung besteht darin, den Wert aus dem internen Datenobjekt zu lesen:

%Vor%     
Miroslav Bajtoš 22.08.2014, 07:44
quelle
13

Dies kann mit den operativen Hooks von Loopback erfolgen.

%Vor%     
mastertinner 29.08.2015 12:03
quelle
3

Sie können Plugins von Drittanbietern ausprobieren:

1) Loopback-Connector für die Aggregation: Ссылка

2) Loopback-Mixins für berechnete / berechnete Eigenschaften (funktioniert nur, wenn eine neue Modellinstanz erstellt wurde): Ссылка Ссылка

3) Loopback-Mix für die Änderungsverfolgung (wird bei jedem Update gestartet): Ссылка

4) Wenn du eine Statistik brauchst - hier ist ein weiterer Mix: Ссылка

5) Sie können verwandte Modelle zählen: Ссылка

6) Sie können verwandte Daten automatisch denormalisieren und speichern und auswählen, welche Felder gespeichert werden (nützlich für das Caching): Ссылка

7) Wenn Sie beim Import eine berechnete Eigenschaft für die Feldzuordnung benötigen: Ссылка

    
countTheRow 22.05.2016 06:51
quelle
0

Ich bin mir nicht sicher, ob Sie jemals gefunden haben, wonach Sie gesucht haben, aber ich suchte nach einer ähnlichen Funktion und konnte sie nicht finden. Nachdem ich einen Stapelüberlauf angefordert hatte, habe ich mein eigenes Plugin geschrieben , das unter diesem Link ausführlich beschrieben wird.

    
Michael.Lumley 04.03.2015 17:34
quelle

Tags und Links