如何在路由模块(node.js)中调用内部函数?

时间:2013-07-08 20:56:18

标签: node.js function methods express routes

我正在使用node.js w / express.js,并在./route/users.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()不起作用,我得到的是这个错误:TypeError:Object#没有方法'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()调用忽略那个错误,哪一个是写路由的正确方法?

1 个答案:

答案 0 :(得分:0)

一个选项是定义list作为本地,然后将其导出。另请注意,在调用req时,您可能希望传递reslist()

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对象无关。任何给定thisfunction的值取决于how that function was called,而不是如何定义。