Nodejs + expressjs中的类成员inheritance
我不太了解类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
如何获取基类中的成员?
谢谢 !
问题不是类的inheritance,而只是你使用list方法的方式。 您直接将它传递给router.get
,那将不起作用,因为您只传递对该函数的引用,而后者不知道UserAPI
实例的UserAPI
。
你可以通过传递一个匿名函数给router.get
来解决这个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));