2016-05-16 7 views
0

Sie haben zwei Tabellen:Sequelize: Wo sollen diese Methoden residieren

  • Benutzer
  • Accounts

Ein Benutzer kann viele Konten haben.

Sie müssen einem Benutzer ein Konto hinzufügen. Mit Sequelize können Sie eine Instanzmethode an das Benutzermodell addAccount() anhängen. Wenn Sie es jedoch aus einem anderen Blickwinkel betrachten, erstellt die Account-Tabelle tatsächlich einen neuen Datensatz, sodass das Account-Modell eine Klassenmethode namens createAccount() haben könnte.

Was ist semantisch korrekt? Oder sollte die Lösung eine Mischung aus beiden sein, wo Sie addAccount() für eine Benutzerinstanz aufrufen und diese Methode die Klassenmethode createAccount() im Account-Modell aufruft?

Und in Anbetracht dessen, dass dies eine Node/Express-App ist, müssen die Informationen zum Erstellen des Accounts validiert und dann von der Anfrage analysiert werden. Wo würdest du diese Validierung/Analyse machen? In den Routen vor dem Aufruf der Kontoerstellungsmethode? Oder als eine 'private' Funktion (__parseReq) in den Klassenmethoden des Benutzermodells oder des Kontenmodells?

Antwort

0

Wenn ich in Ihrer Position wäre, würde ich lieber addAccount für eine Benutzerinstanz verwenden. Der Hauptgrund dafür ist, dass Sie leicht sagen können, dass das neu erstellte Konto "der betreffenden Benutzerinstanz gehört".

Wenn Sie (aus bestimmten Gründen) wirklich ein einzelnes Konto erstellen müssen, ohne dass eine Benutzerinstanz vorhanden ist, können Sie weiterhin Account.create() verwenden.

Für die Wertvalidierung können Sie entweder manuell validieren, bevor Sie Fortsetzungsoperationen ausführen, oder Sie können Ihre Validierungsregeln in der Modelldefinition definieren (mehr Info here).

Verwandte Themen