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));
- Node.js / Express.js – 如何重写/拦截res.render函数?
- 如何在Node.JS中实现inheritance
- Node.js EventEmitter和多层次的inheritance
- 问题获取Node.js Express 3.x模板inheritance与Swig通过consolidate.js
- 为什么nodejs不能inheritance浏览器js
- 如何在node.js中实现jade模板的inheritance
- TypeError:超级expression式必须为null或者一个函数,而不是用Babeljs定义的
- 如何在NodeJS中为自定义错误类获取正确的回溯?
- 编译Coffeescript时不要添加var