Wie benutze ich benutzerdefinierte Route Middleware mit Sails.js? (ExpressJS)

8

Ich habe gerade eine neue Kopie des Node-Frameworks Sails.js ausgepackt. Es basiert auf Express 3. In der Datei /config/routes.js ist dieser Kommentar:

%Vor%

Im selben Konfigurationsordner habe ich die Datei is_ajax.js erstellt.

%Vor%

Mein beabsichtigter Zweck besteht darin, Nicht-Ajax-GET-Anforderungen alle dieselbe Vorlagendatei laden zu lassen, damit meine CanJS-Anwendung den Anwendungsstatus basierend auf der URL einrichten kann (so ist meine Javascript-Anwendung ordnungsgemäß bookmark-fähig).

Ich möchte dieses Skript als Middleware ausführen. Kann mir bitte jemand zeigen, wie man in diesem Fall app.use () benutzt, damit das Skript is_ajax.js vor einem anderen Routing ausgeführt wird?

Ich vermute, es ist so etwas wie

%Vor%

Nur wenn ich das obige mache, sagt es mir, dass es das Express-Modul nicht finden kann. Ich habe überprüft, dass Express ein Modul in Sails 'node_modules ist. Gibt es eine andere Syntax zum Laden? Ich würde lieber nicht eine zweite Kopie von Express neben Segel installieren. Gibt es eine Möglichkeit, auf die ursprüngliche App-Instanz von Sails / Express zuzugreifen?

    
Marshall Thompson 31.08.2013, 13:48
quelle

3 Antworten

17

Sie können dafür Richtlinien verwenden. Speichern Sie Ihre isAjax -Funktion als isAjax.js unter Ihrem api / policies-Ordner und ändern Sie sie so, dass sie nur module.exports anstelle von module.exports.isAjax verwendet. Dann können Sie in Ihrer Datei config / policies.js angeben, auf welche Controller / Aktionen die Richtlinie angewendet werden soll - um isAjax für jede Route auszuführen, tun Sie einfach Folgendes:

%Vor%

in dieser Datei.

    
sgress454 01.09.2013, 20:13
quelle
9

Ich hatte das gleiche Problem herauszufinden, wie man Middlewares nutzt. Sie sind grundsätzlich in config/policies.js definiert.
Also, wenn Sie middlewares (aka Richtlinien ) wie im alten Stil verwenden möchten, können Sie Folgendes tun (dies ist möglicherweise nicht der schönste Weg):

%Vor%

Der eigentliche sailjs Weg besteht jedoch darin, alle diese Richtlinien in den Ordner api/policies/

zu stellen     
rishabhmhjn 14.09.2013 17:40
quelle
4

Um Middleware von Express hinzuzufügen, finde ich diesen Thread und

sails-middleware-example-issue sind sehr nützlich.

  1. install express lokal: npm install express
  2. laden Sie express: var exp = require('express')
  3. füge customMiddleware in $app_dir/config/local.js hinzu
%Vor%
    
TianxiLiu 28.11.2013 13:41
quelle

Tags und Links