快速路线(可选参数)

编程入门 行业动态 更新时间:2024-10-26 12:34:10
本文介绍了快速路线(可选参数)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

上班时遇到问题.我的路由组织基于:使用Express 4 Router组织您的应用路由

I have a problem getting my route to work. I have based the route organisation on : Organizing your app routes with the Express 4 Router

这是 app.js :

var express = require('express'); var router = express.Router(); express.use('/object-settings', require("./route/object-settings"); express.use('/object-settings-edit', require("./route/object-settings-edit");

现在文件对象设置

var express = require('express'); var router = express.Router(); router.get('/', function (req, res) { // Send home page of this section }); module.exports = router;

和 object-settings-edit (请阅读注释,此处描述问题):

And the object-settings-edit (Please read the comments, the problem is described here) :

var express = require('express'); var router = express.Router(); router.get('/:id', function (req, res) { // Return page for editing object having the ID parameters }); router.get('/getPageData', function (req, res) { // If I'm calling one of those route : // - /object-edit/getPageData // - /object-edit/getPageData?id=4 // this route will never be reached ! // This is the preceding one that catch the request. I think I'm understand why, because // any parameters (including the name getPageData) will be catch by the :ìd ? // How can I avoid that ? Forcing the id parameter to be a NUMBER only using regex ? // Or maybe there a better way to do it ? // Return JSon page data var objectID = req.param("id") var databaseObject = database.find(objectID); res.json(databaseObject); }); module.exports = router;

最诚挚的问候

推荐答案

express.Router()每次都会创建一个新路由器;它不是通过 express.Router()调用共享的.这样做似乎不符合您的预期:

express.Router() creates a new router each time; it's not shared via the express.Router() call. Doing this won't work as you seem to expect:

var router = express.Router(); app.use('/object-settings', router); router = express.Router(); router.get('/:id', cb);

相反,请执行以下操作:

Instead, just do:

var router = express.Router(); // Can be done in either order router.get('/:id', cb); app.use('/object-settings', router);

只需确保您引用的是同一路由器对象.

Just make sure you are referencing the same router object.

更多推荐

快速路线(可选参数)

本文发布于:2023-07-14 22:13:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1107319.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:可选   路线   参数   快速

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!