2013-07-08 37 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而不是如何定义。