2016-06-20 6 views
0

同じパラ名を持つ複数のルートでapp.param上の関数を呼び出す 1)/api/CountryMaster /:RecordIdRecordByIdCtry関数を呼び出す必要があります。 &エクスプレス:私はことを期待してい</p> <p>:私は2つのルートが2つの別々のファイルで定義されているが、パラメータ<strong>が</strong>は、両方のルートに対して同じであるレコードID持って

2)私は/API/commonMaster /を呼び出しています:MasterName /:、 のみRecordByIdCmn関数が呼び出されるべきですがレコードID。

しかし、両方の関数が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); 
} 

どのように私は唯一のメソッドが呼び出されることを保証することができます。..

答えて

1

あなたにコード、appは常に同じアプリですので、基本的には2つのハンドラを宣言しています同じパラメータは動作しません。

代わりに、完全に独立したroutersを使用する必要があります。CommonMaster.jsため

// 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); 
}; 

と類似しています。

関連する問題

 関連する問題