nodejs + expressjs中的类成员继承

时间:2017-10-11 11:42:08

标签: node.js express inheritance

我不太明白类继承和上下文在nodejs + expressjs中是如何工作的。

我有3个文件:

api.js

class API {
  constructor () {
    this._id = Math.random()
    console.log("Instantiated id:" + this._id)
  }

  list (req, res, next) {
    console.log("Instantiated id:" + this._id)
  }
}
module.exports = API

user.js的

const API = require('./api.js')

class UserAPI extends API {

  constructor () {
    super()
  }
}
module.exports = UserAPI

route.js

var UserAPI = require('./user.js')
var user = new UserAPI()
router.get('/', user.list);

我希望看到的是每次执行GET请求时启动相同ID的ID。 但是当我做GET请求时,我有:ERROR: TypeError: Cannot read property '_id' of undefined

如何在派生时访问Base类中的成员?

谢谢!

2 个答案:

答案 0 :(得分:1)

问题不是类继承,而只是你使用list方法的方式。您将它直接传递给router.get,但它不会起作用,因为您只传递对该函数的引用,然后该函数不知道UserAPI实例的上下文

您可以通过将匿名函数传递给router.get然后执行user.list来解决此问题,如下所示:

<强> route.js

var UserAPI = require('./user.js')
var user = new UserAPI()
router.get('/', (req, res, next) => user.list(req, res, next));

答案 1 :(得分:0)

使用express进行API继承是不可能的。检查ZinkyJS,它完全符合您的要求。