我不太了解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);


我想看到的是启动时的ID,然后每次执行GET请求时都使用相同的ID。
但是当我执行GET请求时,我有:ERROR: TypeError: Cannot read property '_id' of undefined

派生基类时,我该如何访问它?

谢谢 !

最佳答案

问题不在于类继承,而仅仅是您使用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));

关于node.js - Node.js + Express.js中的类成员继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46687355/

10-09 20:12
查看更多