簡體   English   中英

nodejs+expressjs中的類成員繼承

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM