首页 > 解决方案 > ExpressJS 中间件不工作

问题描述

我尝试在 ExpressJS 中实现中间件。我遇到了一个问题,中间件只有在我使用 app.use(mymiddleware) 方法添加它时才有效。但我想把它分开到特定的路线。

这是我的 PRroute:

export = (app: any) => {

const endpoint = process.env.API_BASE + "prs";

app.post(endpoint, PR.create);

app.delete(endpoint + "/:id", PR.delete);

app.get(endpoint + "/:id", PR.getOne);

app.get(endpoint, PR.getAll);

app.put(endpoint + "/:id", PR.update);

};

我的目标是像这样实现:

export = (app: any) => {

app.use(User.IsAdmin);

const endpoint = process.env.API_BASE + "prs";

app.post(endpoint, User.IsAdmin, PR.create);

app.delete(endpoint + "/:id", PR.delete);

app.get(endpoint + "/:id", PR.getOne);

app.get(endpoint, PR.getAll);

app.put(endpoint + "/:id", PR.update);

};

但它不起作用。因为我的快递文件看起来像这样:

   const routesPR = require("../routes/PRroute")(app);

如果我添加到 app.use(User.IsAdmin) 方法,它是有效的,但它在每个 GET/POST 方法之前调用这个方法。

是否有任何解决方案可以在不将公共和管理员路由分成不同文件的情况下实现这一目标?

感谢您的回答。

标签: javascriptnode.jstypescriptexpressmiddleware

解决方案


推荐阅读