当前位置: 首页 > 知识库问答 >
问题:

Node.jsExpress嵌套资源

阮炯
2023-03-14

我想像下面这样嵌套资源。

/// fileA.js
app.use('/dashboards/:dashboard_id/teams', teams);
[...]

///teams.js
router.get('/', function(req, res, next) {
[...]
}

但我不能得到请求。团队中的params[“dashboard_id”]参数,因为它似乎已被参数值替换。我试图通过调用一个中间函数来传递问题,并将参数传递到某个地方,但我不知道在哪里…你有答案吗?谢谢,佛朗哥

共有3个答案

越季萌
2023-03-14

您可以在此处使用<code>合并参数

// fileA.js
app.use('/dashboards/:dashboard_id/teams', teams);

// teams.js
const router = express.Router({ mergeParams: true })
router.get('/', function(req, res, next) {
  // you will have access to req.params.dashboard_id here
}

您还可以看到这个答案:使用ExpressRest。js嵌套路由器

班展
2023-03-14

在撰写本文时,使用 Express 4.0.0 或更高版本:

要使路由器理解带有变量的嵌套资源,您需要为每个基本路径使用app.use创建并绑定一个新路由器。

//creates a new router
var dashboardRouter = express.router();

//bind your route
dashboardRouter.get("/:dashboard_id/teams", teams);

//bind to application router
app.use('/dashboards', dashboardRouter);

这样,Express将看到路径的第一部分,并转到< code>/dashboards路线,该路线具有< code>:dashboard_id/teams路径。

阳俊德
2023-03-14

您可以尝试以下解决方案:

//declare a function that will pass primary router's params to the request
var passPrimaryParams = function(req, res, next) {
    req.primaryParams = req.params;
    next();
}

/// fileA.js
app.use('/dashboards/:dashboard_id/teams', passPrimaryParams);
app.use('/dashboards/:dashboard_id/teams', teams);

///teams.js
router.get('/', function(req, res, next) {
    var dashboardId = req.primaryParams['dashboard_id'];  //should work now
    //here you may also use req.params -- current router's params
}
 类似资料:
  • 假设我有两种资源:手推车和物品。项目可以嵌套在购物车内,也可以不嵌套在购物车内: 在REST约定中,购物车中的同一项目和购物车中的同一项目是不同的资源吗?

  • 我需要实现一个在我看来更适合SOAP而不是RESTful服务的搜索,因此我正在努力将其表达为RESTendpoint。 公司(companyId) 合同(Contractd,companyId,privilegeGroupId) PrivilegeGroup(privilegeGroupId,privilegeId) 特权(privilegeId) 主键以粗体显示。 FindPrivilegesB

  • 假设我有一个REST资源,比如: /Company/{companyId}/Department/{departmentId}/Employees/{employeeId} 和实体类,其中CompanyEntity具有和DepartmentEntity具有。所有ID都是唯一的。 现在有人打电话来了 在Spring Data JPA/Hibernate中找到具有{employeeId}的员工的好方法

  • 我正在努力理解如何在REST中处理嵌套资源。 例如,如果我有一个名为cities的表,另一个名为companies的表具有外键约束(某个城市中存在一家公司),那么当有人获得一个城市时,我是否也应该发送该城市中所有公司的列表?如果是这样,如果他们在特定城市(城市/55)上放置,并且存在嵌套的公司集合,我是否也会更新嵌套的公司? 或者删除怎么样?我是逐级删除一个城市中的所有公司,还是只是暂时将他们所在

  • 当访问下面的URL时,我会得到相应的分页 但是,当访问以下URL时,Spring Data REST没有开箱即用的分页- UserRepository和UserPostRepository都是带有分页的JPA存储库。结果,第二个URL抛出GC开销超出错误,因为返回结果的行数非常大。 有没有办法用第二个URL进行分页?

  • 在使用MongoDB的ExpressJS示例中,这是一个关于相关/嵌套资源的RESTful路由设计的一般设计问题。总之,我应该如何设计此类嵌套/链接管线? 关于我的应用程序/场景:我用NodeJS/ExpressJS和MongoDB实现了一个RESTful服务。我有两种不同的相关模型,分类和文章。 我找到了两种方法来设计关系船,分别是路线: 这意味着使用了嵌套路径,并且关系是直接的。 优点是设置文