首页 > 解决方案 > Node.js Express 在 app.post() 内执行

问题描述

我现在有一个问题,我自己无法解决。我想你在这里知道更多。我才刚刚开始。

通过使用以下代码,我得到了一个客户列表:

app.get("/customers", customers.findAll);

我想添加身份验证。但现在我不知道如何执行“customers.findAll”并将值作为 JSON 获取。

app.get("/customers", verifyToken, (req, res) => {
    jwt.verify(req.token, 'justAtest, (err, authData) => {
    if (err) {
     res.sendStatus(403);
    } else { 
      // execute customers.findAll
    }
   }); 
  });

客户通过需求集成

const customers = require("../controllers/customer.controller.js");

内容如下:

exports.findAll = (req, res) => {
  Customer.getAll((err, data) => {
    if (err)
      res.status(500).send({
        message:
          err.message || "Some error occurred while retrieving customers."
      });
    else res.send(data);
  });
};

你有什么想法?

先感谢您。

问候

韩国

标签: javascriptnode.jsexpress

解决方案


您可以使用称为“中间件”的东西来实现这一目标。探索它,因为它非常重要。

基本上 :

app.get("/customers", verifyToken,customers.findAll);

其中验证令牌是一个具有 3 个参数的函数:req、res 和第三个称为“next”的参数。所以你的验证令牌函数看起来像:

(req, res,next) => {
    jwt.verify(req.token, 'justAtest, (err, authData) => {
    if (err) {
     res.sendStatus(403);
    } else { 
      next();
    }
   }); 
  }

我是从你的片段中提取的。基本上,如果你想跳转到customeeers.finalAll,只需调用“next”,它就会跳转到下一个函数:D。


推荐阅读