Epi*_*tax 1 node.js express typescript
我有一个 Node 应用程序,其中 Express 使用 Babel 实现 TypeScript。
我尝试创建一个UserController具有私有属性的对象_user: User并将其设置在类构造函数中。问题是,我不断地输入"message": "Cannot read property '_user' of undefined"输出。
这是我的课:
export class UserController extends CrudController {
private _user: User;
constructor() {
super();
const user = new User();
user.id = 1;
user.email = 'johnappleseed@apple.com';
user.firstName = 'John';
user.lastName = 'Appleseed';
this._user = user; // Setting the global class property
}
get(req: Request, res: Response) {
res.json({ user: this._user });
}
}
Run Code Online (Sandbox Code Playgroud)
扩展类CrudController只是一个抽象类,但代码仍然如下:
export abstract class CrudController {
public abstract get(req: Request, res: Response): void;
}
Run Code Online (Sandbox Code Playgroud)
这是我的路线文件:
const userController = new UserController();
router.route('/user')
.get(userController.get);
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?谢谢!
由于传递userController.get到路由器,this一旦调用路由器,您将失去该类的上下文。
您可以通过binding方法来解决此问题userController,从而设置this控制器(有关更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind):
const userController = new UserController();
router.route('/user')
.get(userController.get.bind(userController);
Run Code Online (Sandbox Code Playgroud)