1

我正在使用带有 express.js 的 node.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 # has no method '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() 调用的错误,哪一种是编写路由的正确方法?

4

1 回答 1

0

一种选择是定义并引用list为本地,然后将其导出。req另请注意,您可能希望res在调用list().

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对象无关。thiswithin any given的值function取决于该函数是如何被调用的,而不是它是如何定义的。

于 2013-07-08T22:20:24.437 回答