Node.js 双重路由问题

Node.js double routing issue

我有两条路线被相同的 url 击中: http://localhost:3000/admin/venues/edit/1234

我希望这个 url 只会触发路线 2。为什么它也会触发路线 1?

路线#1:

app.get('/:locality/:category/:venue', require('../views/details/index').index);

路线 #2:

app.get('/admin/venues/edit/:slug', require('../views/admin/index').index))

我想第二条路线无法理解它不应该在第一个参数 'admin' 上触发。您能否使用 RegExp 模式指定路由 #1 中的第一个参数应忽略某些单词,例如 'admin'?

由于路由 1 位于路由 2 之前,节点会认为 "admin" 是您要分配给 :locality 参数的值。切换路线的顺序,一切都应该没问题。根据经验,将带有参数的路由放在路由列表的末尾。路线的顺序很重要。