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