具有相同路线的多个 .get(...)
Multiple .get(...) with same route
我正在尝试添加 router.get('/:name', ...),这将 return 基于 ':name' 参数从数据库中获取一个点。
routes/points.js
import express from 'express'
import Points from '/path/models/points'
let router = express.Router()
router.get('/:session', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId
})
})
export default router
当我尝试添加另一个 '.get' 时,当我使用来自 'session' 的不同参数时,所有 returned 都是未定义的,因为使用了原始 router.get正在寻找 'session'.
有没有办法添加另一个采用不同参数的 'get'?
跟进我的评论:
import express from 'express';
import Points from '/path/models/points';
let router = express.Router();
router.get('/sessions/:session', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId
});
});
router.get('/names/:name', (req, res) => {
.. actual code here ..
});
export default router;
现在,如果您真的坚持为您的查询设置一个不可知的入口点,您可以使用一个路由,并使用实际的数据库查询来搜索两个 session_id
和 name
字段在你的数据库中匹配你不可知的参数。类似于:
import express from 'express';
import Points from '/path/models/points';
let router = express.Router();
router.get('/:points', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId OR name
});
});
export default router;
但是我仍然认为在根级别进行参数匹配是一个糟糕的主意。
至于有两个路由在根级别同时匹配参数,那是不可能的,因为定义的第一个路由将接收所有传入请求,而第二个将接收 none,只是因为没有办法从 :name
参数中分辨出 :session
参数。对于 node/express,它们都是相同的,即它们都匹配 根正斜杠后的任何内容。
我正在尝试添加 router.get('/:name', ...),这将 return 基于 ':name' 参数从数据库中获取一个点。
routes/points.js
import express from 'express'
import Points from '/path/models/points'
let router = express.Router()
router.get('/:session', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId
})
})
export default router
当我尝试添加另一个 '.get' 时,当我使用来自 'session' 的不同参数时,所有 returned 都是未定义的,因为使用了原始 router.get正在寻找 'session'.
有没有办法添加另一个采用不同参数的 'get'?
跟进我的评论:
import express from 'express';
import Points from '/path/models/points';
let router = express.Router();
router.get('/sessions/:session', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId
});
});
router.get('/names/:name', (req, res) => {
.. actual code here ..
});
export default router;
现在,如果您真的坚持为您的查询设置一个不可知的入口点,您可以使用一个路由,并使用实际的数据库查询来搜索两个 session_id
和 name
字段在你的数据库中匹配你不可知的参数。类似于:
import express from 'express';
import Points from '/path/models/points';
let router = express.Router();
router.get('/:points', (req, res) => {
Points.query({...}).fetchAll().then(point => {
//returns points based on sessionId OR name
});
});
export default router;
但是我仍然认为在根级别进行参数匹配是一个糟糕的主意。
至于有两个路由在根级别同时匹配参数,那是不可能的,因为定义的第一个路由将接收所有传入请求,而第二个将接收 none,只是因为没有办法从 :name
参数中分辨出 :session
参数。对于 node/express,它们都是相同的,即它们都匹配 根正斜杠后的任何内容。