2016-05-06 10 views
1

I Segel-Haken-sequelize bin mit sequelize als ORM in meinen Segeln App zu laden. Das Setup meiner Controller und Richtlinien (d. H. Nur ihre Methoden erstellen) hängt jedoch von den Modellen ab. Ich muss den installierbaren Haken "sails-hook-sequelize" ausführen, bevor ich Controller- und Policy-Hooks ausführe (derzeit wird er ausgeführt und die Controller/Policies können nicht geladen werden). Wie kann ich das machen? TLaden einen installierbare Haken vor dem nativen Haken

Vielen Dank im Voraus.

Edit: Hier ist ein Code zu veranschaulichen, was ich zu tun versuche:

UserController.js

let Endpoint = require('../classes/Endpoint'); 

let endpoint = new Endpoint(User); 

Object.assign(endpoint, { 
    find 
}); 

module.exports = endpoint; 

function find(req, res, next) { 
    User.findAll(
     { 
      where: req.query, 
      include: [ 
       { 
        model: Privilege, 
        include: [ 
         { 
          model: Account, 
          where: { 
           accountPkey: { 
            $in: AuthorizationService.accountsForPrivileges(req.tokenData.privileges, ['ADMINISTRATOR', 'OFFICE MANAGER']) 
           } 
          } 
         } 
        ] 
       } 
      ] 
     }) 
     .then(users => res.ok(users)) 
     .catch(err => res.serverError(err)); 
} 

im Grunde habe ich eine Standard-Endpoint-Klasse, die ich instanziiert und dann Methoden hinzuzufügen. Sie können sehen, dass die Endpoint-Klasse ein Modellargument verwendet. Wenn dieser Hook jedoch ausgeführt wird, existieren die Modelle noch nicht, da sie von einem Hook eines Drittanbieters definiert werden (mit Sequelize).

Antwort

0

Es gibt derzeit keine Möglichkeit, einen Drittanbieter-Haken vor dem Kernhaken in Segeln zu laufen.

Oft wenn ich Fragen wie diese sehe, ist es von jemandem, der versucht, eine Wordpress-ähnliche Plattform zu erstellen, und sie machen die Annahme, dass für jeden neuen "Entitätstyp" ein Endbenutzer erstellt (dh Blog , Artikel, Kommentar) sie brauchen ein neues Modell. Eine Alternative ist es, ein Entity-Modell, mit einem contents Attribute zu erzeugen, die eine Zuordnung zu einem oder ContentEntityAttribute Modell ist die mehr oder weniger nur ein Schlüssel/Wert-Speicher ist. Dann können Sie Platzhalterrouten verwenden, damit die Aktionen EntityController den richtigen Entitätstyp laden.

+0

Ich habe das OP, um zu versuchen und zu erklären, was ich versuche, vielleicht erreichen Sie eine Vorstellung haben. Ich kann mich nicht wirklich mit dem Modell anlegen (glaube ich nicht), da ich dies auf eine bereits existierende Datenbank mit einer sehr durchdachten Architektur aufbaue. – pQuestions123

+0

Ich denke, ich habe eine Möglichkeit, dies zu umgehen. Wie kann ich die Reihenfolge meines Projekts/der installierten Hooks festlegen? (d. h. Ich möchte einen Projekt-Hook erstellen, der nach sails-hook-sequelize läuft) – pQuestions123

+0

Das ist eine gute Frage, aber es verdient einen separaten Beitrag, falls jemand anders dieselbe Frage hat! Die Antwort auf diese Frage bleibt noch, "du kannst es nicht tun", vorerst. – sgress454