2017-03-01 3 views
2

Ich versuche Eigenschaften zu einem (zuvor erstellten) Modell durch ein Bootscript hinzuzufügen, indemStrongloop Eigenschaften hinzufügen während des Bootens

model.getDataSource().definePropery(model_name , property , property_value) 

Verwendung Während es scheint, dass das Modell korrekt die Eigenschaft akzeptiert (ich kann es über Modell sehen .definition.properties [property]) der API-Explorer und möglicherweise die vollständige Remote-API wird nicht entsprechend aktualisiert. Gibt es eine Methode, um eine Aktualisierung auf diese zu erzwingen?

Mein Ziel ist ein Plugin-System, das bestehende Basismodelle mit zusätzlichen Eigenschaften und Methoden erweitert, wobei der Methoden-Teil fehlerlos funktioniert. Ich möchte nicht die JSON-Datei vor dem Start ändern müssen, so dass ein dynamischer Ansatz sehr bevorzugt wäre.

[EDIT] Ich habe herausfinden, wie die Methode hinzuzufügen, aber es sieht so schmutzig-Hacky, dass ich fürchte, es zu Problemen führen wird. Nach dem Hinzufügen aller Eigenschaften überschreibe ich das Modell der App mit dem modifizierten Modell:

app.model(model , { dataSource: model.getDataSource() }) 

Haben Sie irgendwelche Gedanken zu diesem Hack?

Antwort

1

Ich glaube, ohne Ihre Workaround sollte es in Ordnung sein, wie es scheint nur der API-Explorer nicht erfrischend. Andere Funktionalität sollte unberührt bleiben.

Mit Blick auf den Loopback-Komponente-Explorer-Code, es refreshes auf die modelRemoted und remoteMethodDisabled Anwendungsereignisse.

es ist also nicht verwunderlich, dass Ihre Abhilfe erfrischt:

app.model(model , { dataSource: model.getDataSource() })

Denn die bewirkt, dass ein modelRemoted Ereignis emittiert wird.

Wahrscheinlich ein sicherer Weg wäre, sich nur emittieren:

app.emit('modelRemoted', model.sharedClss); 

Dies wird nicht beinhalten alle, Maschinen mit Verwendung von app.model beteiligt. Ich suchte auf Github nach Nutzungen dieses Ereignisses und fand nichts, was Probleme damit hätte. Also ich glaube, es sollte Ihr Problem für jetzt beheben, bis loopback das behebt.

In der Zwischenzeit habe ich einen Bug-Bericht dafür bei here eingereicht, ich schlage vor, es im Auge zu behalten.

Verwandte Themen