[英]Class member inheritance in nodejs + expressjs
我不太明白類繼承和上下文在 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
用戶.js
const API = require('./api.js')
class UserAPI extends API {
constructor () {
super()
}
}
module.exports = UserAPI
路由.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
實例的UserAPI
。
您可以通過將匿名函數傳遞給router.get
然后執行user.list
來解決此user.list
,如下所示:
路由.js
var UserAPI = require('./user.js')
var user = new UserAPI()
router.get('/', (req, res, next) => user.list(req, res, next));
使用 express 進行 API 繼承是不可能的。 檢查ZinkyJS ,它正是您想要做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.