2013-07-08 61 views
1

我使用Node.js的W/express.js,並有以下行內./route/users.js:如何調用路由模塊(node.js)中的內部函數?

exports.add = function(req, res) { 
    // some code here 
    this.list(); 
} 

exports.delete = function(req, res) { 
    // some code here 
    this.list(); 
} 


exports.list = function(req, res) { 
    // some code here 
} 

問題是,this.list()不工作,我得到的是這樣的錯誤:類型錯誤:對象#有沒有方法「名單」

我已經嘗試不同的方法太:

module.exports = { 
    add: function(req, res) { 
    // some code here 
    this.list(); 
    }, 

    delete: function(req, res) { 
    // some code here 
    this.list(); 
    }, 

    list: function(req, res) { 
    // some code here 
    this.list(); 
    } 
} 

但沒有工作太..順便說一句,如果我們忽略與錯誤list()調用,哪一個是寫路由的正確方法?

回答

0

一個選項是定義並參考list作爲本地,然後將其導出。另外請注意,您在致電list()時可能想要通過reqres

function list(req, res) { 
    // ... 
} 

module.exports = { 
    add: function add(req, res) { 
    // ... 
    list(req, res); 
    }, 

    delete: function (req, res) { 
    // ... 
    list(req, res); 
    }, 

    list: list 
}; 

使用this的問題是它不依賴於exports對象。任何給定的function內的this的值取決於how that function was called而不是如何定義。