在处理http响应的UserController类中,我希望从此类的findAll方法访问从另一个类“ UserService”注入的方法,该方法在我的构造函数中实例化。 但是“ this”是不确定的。 我真的不知道为什么。 我在路由文件中使用new关键字实例化了UserController。
我正在使用express,esm建立一个新的节点应用程序。我用基于ESM的ES6糖编写课程。
userRoutes.js
module.exports = app => {
const userController = new UserController();
app.get(
'/api/v1/users',
AuthentificationMiddleware.verify,
AuthorizationMiddleware.permit(['admin', 'user']),
userController.findAll,
);
}
UserController.js
export default class UserController {
constructor() {
this.userService = new UserService();
}
async findAll(req, res, next) {
if (!req.body) next(new Error('No body found'));
const api = new Api(res, req);
// here this is undefined console.log(this);
// Then I can't access to this.userService.findAll()
try {
const { users, error } = await this.userService.findAll();
if (error) return api.failure({ error, status: 422 });
return api.success({
users,
});
} catch (error) {
return api.failure({ error, status: 422 });
}
}
}
UserService.js
export default class UserService {
constructor() {
this.userDbHelper = new UserDBHelpers();
}
async findAll() {
try {
const users = await this.userDbHelper.findAll();
return { users };
} catch (error) {
throw error;
}
}
}
我希望这是课程,但是我没有定义