我在2个单独的文件中定义了2条路线,但两条路线的参数 RecordId 相同:
我期待的是: 1)每当我打电话给 / api / CountryMaster /:RecordId 时, 只应调用 RecordByIdCtry 函数。 &安培;
2)当我打电话给 / api / commonMaster /:MasterName /:RecordId 时, 只应调用 RecordByIdCmn 函数。
然而,两个函数都被调用,顺序是在javascript中设置的。 即。
require('../app/routes/commonMaster.server.routes.js')(app);
require('../app/routes/countryMaster.server.routes.js')(app);
我怎样才能阻止这些&确保只调用一个方法。
// CountryMaster.js
var ctrl = require('../../app/controllers/CountryMaster.server.ctrl.js');
var users = require('../../app/controllers/user.server.ctrl.js');
module.exports = function (app)
{
app.route('/api/CountryMaster')
.get(users.requiresLogin,ctrl.list)
.post(users.requiresLogin,ctrl.create);
app.route('/api/CountryMaster/:RecordId')
.get(ctrl.read)
.put(users.requiresLogin, ctrl.hasAuthorization, ctrl.update)
.delete(users.requiresLogin, ctrl.hasAuthorization, ctrl.delete);
app.param('RecordId', ctrl.RecordByIdCtry);
}
// CommonMaster.js
var ctrl = require('../../app/controllers/commonMaster.server.ctrl.js');
var users = require('../../app/controllers/user.server.ctrl.js');
module.exports = function (app)
{
app.route('/api/commonMaster/:MasterName')
.get(users.requiresLogin,ctrl.list)
.post(users.requiresLogin,ctrl.create);
app.route('/api/commonMaster/:MasterName/:RecordId')
.get(ctrl.read)
.put(users.requiresLogin, ctrl.hasAuthorization, ctrl.update)
.delete(users.requiresLogin, ctrl.hasAuthorization, ctrl.delete);
app.param('MasterName', ctrl.MasterName);
app.param('RecordId', ctrl.RecordByIdCmn);
}
如何确保只调用一个方法..
答案 0 :(得分:1)
在您的代码中,app
始终是相同的应用,因此您基本上为相同的参数声明了两个处理程序,但这些处理程序无法正常工作。
您应该使用完全独立的routers代替:
// CountryMaster.js
...
module.exports = function(app) {
var router = require('express').Router();
router.route('/')
.get(...)
.post(...);
router.route('/:RecordId')
.get(...)
.put(...)
.delete(...);
// The magic:
router.param('RecordId', ctrl.RecordByIdCtry);
// Mount the router on `/api/CountryMaster`
app.use('/api/CountryMaster', router);
};
与CommonMaster.js
相似。