Issue
I'm doing an express app with typescript. The router code is:
let user = new User();
router.get("/", user.test);
the user class is
export class User {
test(req, res, next) {
// this === undefined
}
}
the problem is that the this object is undefined inside test method. Is there a better way to implement express routing?
Solution
You need to use the bind function to keep the scope of this
when the method is invoked:
let user = new User();
router.get("/", user.test.bind(user));
Or you can do that in the User
constructor:
export class User {
constructor() {
this.test = this.test.bind(this);
}
test(req, res, next) {
...
}
}
Another option is to use an arrow function:
let user = new User();
router.get("/", (req, res, next) => user.test(req, res, next));
Answered By - Nitzan Tomer
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.