gpt4 book ai didi

javascript - 在路由 express 中使用类

转载 作者:行者123 更新时间:2023-11-30 11:30:16 25 4
gpt4 key购买 nike

我决定将代码从函数重写为类。但是,我遇到了这样一个问题,我的this undefined

路由

// router.js

const ExampleController = require('./ExampleController');
const instanceOfExampleController = new ExampleController();

// Require express and other dependencies

app.post('/post-to-login', instanceOfExampleController.login) // An error appears inside the method

和 Controller

// My Controller

class ExampleController {

// Private method
myPrivateMethod(info) {
return info.toUpperCase();
}

login(req, res, next) {
console.log('----------------------');
console.log(this); // Here "this" equal of undefined!
console.log('----------------------');
const someValue = this.myPrivateMethod(req.body.info); // Not work!
res.send(someValue);
};
}

最佳答案

instanceOfExampleController.login.bind(instanceOfExampleController) 可以解决问题。一旦被直接调用,该函数就会失去其上下文。

或者,您可以使用:

app.post('/post-to-login', function (req, res, next) {
instanceOfExampleController.login(req, res, next);
});

关于javascript - 在路由 express 中使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com