Javascript Expressjs路由映射

Javascript Expressjs路由映射,javascript,node.js,express,Javascript,Node.js,Express,我想创建一种编程路由生成器 我有一个这样的模块/utils/crud.js const express=require('express'); const router=express.router(); module.exports=函数(模型){ 路由器.get(“/”,(请求、恢复、下一步)=>{ log('对模型使用CRUD:'+模型.modelName); }); 返回路由器; }; 我在我的mainapp.js中使用它,如下所示 const{Report,Room}=require

我想创建一种编程路由生成器

我有一个这样的模块
/utils/crud.js

const express=require('express');
const router=express.router();
module.exports=函数(模型){
路由器.get(“/”,(请求、恢复、下一步)=>{
log('对模型使用CRUD:'+模型.modelName);
});
返回路由器;
};
我在我的main
app.js中使用它,如下所示

const{Report,Room}=require('./utils/models');
常量积垢=需要('./utils/crud');
const reports=积垢(Models.Report);
施工间=积垢(模型间);
应用程序使用(“/报告”,报告);
应用程序使用(“/房间”,房间);
其中,
Report
Room
是猫鼬模型(这不相关,但解释了我为什么要尝试这种方法)

每当y试图到达第二个端点时

$ curl my.domain.com/rooms/
服务器正确地知道映射并记录:

GET /rooms
但它运行了错误的模块:

Using CRUD for model: report

为什么每个路由都要运行第一个中间件?

如果在这两种情况下都使用相同的路由器,请尝试放置
const router=express.router()在导出函数内部

此代码
const crud=require('./utils/crud')将路由器实例从crud.js导入app.js。
app.js中的
crud()
函数使用此实例。
您可以将
const express=require('express')表达式到
模块中。在crud.js中导出
。它应该会有帮助。

无缝。您能解释导出功能内外的范围吗?@demil133我可以试试:),在app.use或router.use中,您可以提供多个cb,
app.use(“/”,middleware1,middleware2,endroute)只要中间件1正在执行
next()调用中间件2,依此类推。。。在上面的代码中执行相同的路由。使用('/',()=>{}),twise so express.route将其视为路由。使用('/',report,rooms)。如果reports方法将调用next();它首先会说
对m.:reports使用CRUD
,然后
对m.:rooms使用CRUD
,但我猜你不想连锁上千个子例程,所以最好的方法是给每个模块新定义的路由。