node.js - Nodejs + ExpressJS 中的类成员继承

标签 node.js express 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);

我想看到的是启动时的 ID,然后每次执行 GET 请求时看到的 ID。 但是当我执行 GET 请求时,我有: ERROR: TypeError: Cannot read property '_id' of undefined

在派生基类时如何访问基类中的成员?

谢谢!

最佳答案

问题不在于类继承,而在于您使用列表方法的方式。您将其直接传递给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 - Nodejs + ExpressJS 中的类成员继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687355/

相关文章:

javascript - 取消 componentWillUnmount 方法中的所有 Subscriptions 和 Asyncs,如何?

javascript - 向对消息使用react的人发送 DM - Discord JS

javascript - 在 Express 服务器中以 UTF-16 编码发送 JSON 响应

ruby-on-rails - Rails类继承,Mongoid返回数据失败

python - Mixin 类 __init__ 函数不会自动调用吗?

c - 使用 tcp_nodelay 发送大消息时出现奇怪的延迟

node.js - 我如何从不同的node.js进程连接到meteor.js mongodb实例

javascript - Handlebars 模板引擎未定义

javascript - ReactJS Axios 和 Go API 之间的请求

python - 从 str 或 int 继承