Node.js Express.js不带参数的嵌套路由
我有一个快速服务器,解析Node.js Express.js不带参数的嵌套路由,node.js,express,routes,Node.js,Express,Routes,我有一个快速服务器,解析GET/companys/:id/populate/。现在,我想设置GET/companys/populate/(不带:id)。然而,我不能走这条路去上班。例如,如果我尝试使用GET/companys/all/populate/,它会起作用,因此快速路线的模式似乎是path/:key/path/:key 这是真的吗?谢谢 编辑:添加代码。 server.js 'use strict'; var express = require('express'); var mong
GET/companys/:id/populate/
。现在,我想设置GET/companys/populate/
(不带:id
)。然而,我不能走这条路去上班。例如,如果我尝试使用GET/companys/all/populate/
,它会起作用,因此快速路线的模式似乎是path/:key/path/:key
这是真的吗?谢谢
编辑:添加代码。
server.js
'use strict';
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var cors = require('cors');
var mongoUri = 'mongodb://localhost:27017';
mongoose.connect(mongoUri);
var db = mongoose.connection;
db.on('error', function() {
throw new Error('Unable to connect to database at' + mongoUri);
});
// runs Express
var app = express();
// uses Cors
app.use(cors());
// uses bodyParser
app.use(bodyParser.json());
// requires Mongo models
require('./models');
// includes routes.js, passing the object 'app'
require('./routes')(app);
// listens for connections on port 3000
app.listen(3000, function() {
console.log("Express started on Port 3000");
});
routes.js
'use strict';
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var cors = require('cors');
var mongoUri = 'mongodb://localhost:27017';
mongoose.connect(mongoUri);
var db = mongoose.connection;
db.on('error', function() {
throw new Error('Unable to connect to database at' + mongoUri);
});
// runs Express
var app = express();
// uses Cors
app.use(cors());
// uses bodyParser
app.use(bodyParser.json());
// requires Mongo models
require('./models');
// includes routes.js, passing the object 'app'
require('./routes')(app);
// listens for connections on port 3000
app.listen(3000, function() {
console.log("Express started on Port 3000");
});
module.exports=函数(应用程序){
//如果一切正常,竖起大拇指
app.get('/',函数(req,res,next){
res.send('不,您可以管理任何您不需要的路线。path/:key/path/:key
您也可以执行path/path/path
或其他任何操作,您的问题一定在其他地方(请编辑您的问题并提供一些代码以便我们提供帮助)谢谢。只添加了代码。我移动了app.get('/companys/all/populate',companys.populateAll)
第一个和下面的app.get('/companys/:id/populate',companys.populate)有人能解释为什么吗?是的,这是因为它首先读取了/companys/:id/populate
,所以/companys/all/populate
触发了/companys/:id/populate
,使用all
作为:id
。在/companys/:id/populate
之前声明/companys/all/populate
>这就像是说,/companys/all/populate
不同于/companys/:id/populate
,他应该以不同的方式处理这两个问题。@mJehanno明白了。谢谢!