2016-06-22 5 views
0

Ich habe den folgenden Code für meine Route hinzugefügt:Wie Logik meiner Route hinzuzufügen, wenn in Hapi.js Verzeichnis Handler

server.route([ 
{ method: 'GET', path: '/{file*}', 
    config:{ 
    handler: { 
     directory: { 
      path: 'public', 
      listing: true, 
      index: true 
     } 
    }, 
auth: { mode: 'try' }, 
plugins: { 'hapi-auth-cookie': { redirectTo: false } } 
} } ]); 

Obwohl dies nicht mein Zweck dienen alle statischen Inhalte dienen, habe ich noch verstehe nicht wirklich, wo ich den Rest der Logik hinzufügen soll, die ich in einer Handler-Funktion hinzugefügt hätte, wenn es eine gegeben hätte. Aber das Vorhandensein des Verzeichnishandlers würde mir keine Funktion lassen. Also möchte ich wissen, wo ich den Rest der Logik für diese Route hinzufügen kann.

Edit: ich das Hinzufügen versucht das Plugin Electric Fence:

var ElectricFence = require('electricfence'); 
var options = { 
    path: 'public', 
    url: '/menu/{param*}', 
    listing: true, 
    index: false, 
    cache: 3600000 }; 
server.pack.register([{plugin: ElectricFence, options: options}]); 
server.route({ 
    method: 'GET', 
    path: '/menu/{param*}', 
    handler: menuget }); 

Aber das scheint nicht zu funktionieren.

+0

Welche Art von Logik möchten Sie implementieren? Alle Optionen zum Versorgen von Dateien werden hier erwähnt: http://hapijs.com/tutorials/serving-files – ZeMoon

+0

Ich möchte meine GET-Route nicht verwenden, um nur einige statische Dateien zu bedienen. Ich möchte, dass einige Daten in der Datenbank gespeichert werden und auch eine Sitzung für den Benutzer gestartet werden soll, sobald sie diese Route erreichen. Wie implementiere ich das alles, wenn es keine Handlerfunktion gibt, die eine Anfrage akzeptiert und eine Antwort zurückgibt? –

+0

https://github.com/wraithgar/electricfence Electric Fence scheint die Art von Funktionalität zu bieten, die ich suche, aber es scheint nicht zu funktionieren. –

Antwort

0
const Path = require('path'); 
    const Hapi = require('hapi'); 
    const Inert = require('inert'); 

    const server = new Hapi.Server({ 
     connections: { 
      routes: { 
       files: { 
        relativeTo: Path.join(__dirname, 'public') 
       } 
      } 
     } 
    }); 

    server.connection({ port: 3000 }); 

    server.register(Inert,() => {}); 

    server.route({ 
     method: 'GET', 
     path: '/{param*}', 
     config: { 
      validate: { 
       query: { 
        id: require('joi').number() 
       } 
      }, 
      handler: { 
       directory: { 
        path: '.', 
        redirectToSlash: true, 
        index: true 
       } 
      } 
     } 
    }); 

    server.ext('onRequest', function(req, reply) { 
     for(var key in req.query){ 
      if(key) { 
       //some database and session logic goes here 
       console.log(req.query); 
      } 
     } 
     reply.continue(); 
    }); 

    server.start((err) => { 

     if (err) { 
      throw err; 
     } 

     console.log('Server running at:', server.info.uri); 
    }); 
Verwandte Themen