Vielen Dank, alle Teile!
Ich gehe davon aus, mehrere Instanzen von Discourse sowie ein übergeordnetes (nicht-Discourse) Admin-/Koordinationssystem im Hintergrund zu betreiben. Themen werden auf eine von zwei Arten zu Discourse hinzugefügt – entweder von Benutzern über den üblichen Discourse-Mechanismus zur Themen-Erstellung oder vom Admin-/Koordinationssystem über die API.
Wenn ein Thema über die API erstellt wird, repräsentiert es typischerweise eine Aufgabe oder ein ähnliches Workflow-Element, das bereits seine eigene Nicht-Discourse-ID hat – nennen wir sie die „Externe ID“.
Wenn das Thema vom Benutzer innerhalb von Discourse erstellt wird, verwenden wir Webhooks, um eine Azure-Funktion auszulösen, die einen Stub-ähnlichen Klon im zentralen System erstellt (damit die Discourse-Nachrichten in einen breiteren Strom von Inhalten, Aufgaben usw. integriert werden). Daher wird das Discourse-Thema indirekt wieder eine eindeutige „Externe ID“ haben – die wir vorschlagen, das Thema über die API zu aktualisieren.
Wir haben eine maßgeschneiderte Discourse-Themenkomponente, die beim Laden jedes Themas Ajax verwendet, um Nicht-Discourse-zentrierte Informationen aus dem zentralen System abzurufen und diese auf dem Thema-Bildschirm anzuzeigen.
Während wir die Discourse-Themen-ID verwenden könnten, um den Ajax-Aufruf zu parametrisieren und die übereinstimmenden Daten zu finden, ist es effizienter, die „Externe ID“ dafür zu verwenden (es ist einfach sauberer, aus mehreren Gründen – es vermeidet Nachschlagevorgänge usw.).
Wir könnten die „Externe ID“ problemlos in einem benutzerdefinierten Feld speichern – wir haben bereits eines für andere Daten –, aber wir stellen fest, dass die Topics API ein Feld „external_id“ hat, das genau so aussieht, wie wir es brauchen, und ich würde es aus verschiedenen Gründen lieber verwenden – es erleichtert die Einbeziehung dieses etwas entscheidenden Feldes in Berichte, Exporte, vielleicht zukünftige Suchen usw.
Siehe den Screengrab von Discourse API Docs
Ich vermute, dies ist ein eher neues Feld – die meiste Beratung im Forum scheint sich auf das User-external_id-Feld zu beziehen, was ich im Moment nicht brauche. Wie oben erwähnt, rufe ich das Ember-Modell für das Thema ab (innerhalb meiner benutzerdefinierten Themenkomponente) und kann fast alle Informationen über das Thema darüber erhalten … aber nicht das external_id-Feld.
(Wie oben – ich erhalte das Thema mit diesem Code, der irgendwo von dieser Seite ausgeliehen wurde, weiß im Moment nicht woher:
const topicController = api.container.lookup("controller:topic");
if (topicController) {
const thisTopic = topicController.get("model");
Also, die Anfrage – ist das themenspezifische external_id-Feld irgendwo im Modell („thisTopic“) versteckt, oder missverstehe ich diese Konzepte und sollte ich einfach das benutzerdefinierte Feld verwenden, um diese externe ID zu speichern (ich weiß, wie ich diesen Ansatz zum Laufen bringe und wie! .. ich bevorzuge einfach die Sauberkeit und Zukunftsfähigkeit der Verwendung der separaten external_id, falls sie tatsächlich verfügbar ist).
Nochmals vielen Dank für die Hilfe, ich weiß sie zu schätzen!