【问题标题】:Function Reuse Across Routes in Express/Node.jsExpress/Node.js 中的跨路由函数重用
【发布时间】:2020-08-16 18:36:25
【问题描述】:

我正在使用 Node.js 和 Express 创建一个 Web 应用程序。我有两个需要相同功能的路由文件。我想知道我应该在哪里定义这个函数。它应该放在不同的文件夹(助手或实用程序或其他什么?)或我的路线文件夹中的不同文件中。我当前的文件夹结构和https://github.com/WebDevSimplified/Mybrary很相似

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    如果您要使用相同的功能,您可以方便地将其定义在一个文件中,然后将其导入您的路线中。保存在哪里并不重要,这取决于你的项目的顺序。举例:

    folder libs
    --tokenValidator.js
    
    folder routes
    --folder create
    ----createCustomers.js
    --folder read
    ----readCustomers.js
    

    tokenValidator.js 包含:

    module.exports = {
            
        ensureToken (req, res, next) {
    
           const bearerHeader = req.headers['authorization'];
           //console.log(bearerHeader);
    
           if(typeof bearerHeader !== 'undefined') {
               const bearer = bearerHeader.split(' '); //separar bearer del token por espacios
               const bearerToken = bearer[1]; //seleccionar el token
               req.token = bearerToken; //comparar el token del servidor con el recibido
               //console.log('token Validator fine')
               next();
           } else {
               res.sendStatus(403);
               //console.log('Fail in token Validator')
           }         
       }
    };
    

    createCustomers.js 包含

    const { ensureToken } = require('../../libs/tokenValidator.js');
    
    router.post('/dataClient', ensureToken,  (req, res)=>{
    
        jwt.verify(req.token, 'token_key', async (err, data) => {
            if(err) {
                res.sendStatus(403);
                //console.log('token error')
            } else {
                res.send('token ok')
            }
        })
        
    });
    

    readCustomers.js 包含

    const { ensureToken } = require('../../libs/tokenValidator.js');
    
    router.post('/dataClient', ensureToken,  (req, res)=>{
    
        jwt.verify(req.token, 'token_key', async (err, data) => {
            if(err) {
                res.sendStatus(403);
                //console.log('token error')
            } else {
                res.send('token ok')
            }
        })
        
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 2016-05-09
      • 2019-09-02
      • 2015-01-03
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多