Express Router 未按预期路由
Express Router doesn't route as expected
运行 Ubuntu 20.04.2 上的 NodeJS,将 VSApp 与调试器一起使用
我有以下名为 /src/routes/regions.js 的文件:
const router = require('express').Router()
const { int } = require('neo4j-driver')
const { required, optional } = require('../middleware/auth')
const { check } = require('express-validator')
const validate = require('../middleware/validate')
const neo4j = require('../neo4j')
const Joi = require('joi');
const Region = require('../entities/Region')
router.get('/1', (req, res, next) => {
return req.neo4j.read(`
MATCH (regions:Region)
return regions order by regions.name ASC
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
router.get('/', (req, res, next) => {
return req.neo4j.read(`
MATCH (regions:Region)
return regions order by regions.name DESC
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
router.get('/:name', (req, res, next) => {
const params = {
name: req.params ? req.params.name : null
}
return req.neo4j.read(`
MATCH (region:Region { name: $name }) return region
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
module.exports = router;
如果我在浏览器中输入 localhost:3000/regions
,我会收到按降序排列的所有区域的列表。
但是如果我尝试输入 localhost:3000/regions/1
,我什么也得不到。两个调用之间的唯一区别应该是接收数据的顺序。 localhost:3000/regions/Lazio
也一样
它似乎无法识别所提供的模式 URL
另一个非常奇怪的行为是,如果我在文件的任何一行设置断点,调试器都不会停止。看起来是 运行 另一个程序....
有人可以帮忙吗?
您的第一条路线需要包含名称参数。 Express 路线不包括其他地方定义的任何其他路线,因此您需要稍微拼写一下。
router.get('/:name/1', (req, res, next) => {
运行 Ubuntu 20.04.2 上的 NodeJS,将 VSApp 与调试器一起使用
我有以下名为 /src/routes/regions.js 的文件:
const router = require('express').Router()
const { int } = require('neo4j-driver')
const { required, optional } = require('../middleware/auth')
const { check } = require('express-validator')
const validate = require('../middleware/validate')
const neo4j = require('../neo4j')
const Joi = require('joi');
const Region = require('../entities/Region')
router.get('/1', (req, res, next) => {
return req.neo4j.read(`
MATCH (regions:Region)
return regions order by regions.name ASC
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
router.get('/', (req, res, next) => {
return req.neo4j.read(`
MATCH (regions:Region)
return regions order by regions.name DESC
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
router.get('/:name', (req, res, next) => {
const params = {
name: req.params ? req.params.name : null
}
return req.neo4j.read(`
MATCH (region:Region { name: $name }) return region
`, params)
.then(regions => res.send(regions))
.catch(e => next(e))
})
module.exports = router;
如果我在浏览器中输入 localhost:3000/regions
,我会收到按降序排列的所有区域的列表。
但是如果我尝试输入 localhost:3000/regions/1
,我什么也得不到。两个调用之间的唯一区别应该是接收数据的顺序。 localhost:3000/regions/Lazio
它似乎无法识别所提供的模式 URL
另一个非常奇怪的行为是,如果我在文件的任何一行设置断点,调试器都不会停止。看起来是 运行 另一个程序....
有人可以帮忙吗?
您的第一条路线需要包含名称参数。 Express 路线不包括其他地方定义的任何其他路线,因此您需要稍微拼写一下。
router.get('/:name/1', (req, res, next) => {