在Hapi.js中使用目录处理程序时如何向我的路由添加逻辑

时间:2016-06-22 20:04:09

标签: javascript node.js hapijs

我为我的路线添加了以下代码:

   public ActionResult Index(string progcd, string docrecdt)
        {

            if (docrecdt == "docrecdt")
            {
                return View(db.vwtest21.Where(x => x.DOC_REC_DT1 == docrecdt).ToList());
            }         
            else if (progcd == "progcd")
            {
                return View(db.vwtest21.Where(x => x.PROG_CD == progcd).ToList());
            }
            else
            {
                return View(db.vwtest21.Where(x => x.DOC_REC_DT1 == docrecdt && x.PROG_CD == progcd).ToList());
            }           
        }       
    }

虽然这确实有助于我提供所有静态内容的目的,但我仍然不知道在哪里添加我将在处理函数中添加的其余逻辑,如果有的话。 但目录处理程序的存在不会让我有一个功能。所以我想知道在哪里添加这条路线的其余逻辑。

编辑: 我尝试添加插件电围栏:

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

但这似乎也不起作用。

1 个答案:

答案 0 :(得分: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);
    });